OneParameterModel

A one-parameter model that gets 100% on ARC-AGI-2

By Eitan Turok.
TLDR: I built a model that has only one parameter and gets 100% on ARC-AGI-2, the million-dollar reasoning benchmark that stumped ChatGPT. Using chaos theory and some deliberate cheating, I crammed every answer into a single number 260,091 digits long.
In July 2025, Sapient Intelligence released their Hierarchical Reasoning Model (HRM) and the world went crazy. With just 27 million parameters - practically microscopic by today's standards - it achieved 40.3% on ARC-AGI-1, a notoriously difficult AI benchmark with over a million dollars in prize money. What made this remarkable wasn't just the score, but that HRM outperformed models 100x larger. In October came the Tiny Recursive Model, obliterating expectations yet again. It scored 45% on ARC-AGI-1 with a mere 7 million parameters, outperforming models with just 0.01% of their parameters. Naturally, I wondered: how small can we go? So I built a one parameter model that scores 100% on ARC-AGI-2. This is on ARC-AGI-2, the harder, newer version of ARC-AGI-1. The model is not a deep learning model and is quite simple: ||[ \begin{align*} f_{\alpha, p}(i) & := \sin^2 \Big( 2^{i p} \arcsin(\sqrt{\alpha}) \Big) \tag{1} \end{align*} ||]where ||(x_i||) is the ||(i\text{th}||) ARC-AGI-2 puzzle and ||(\alpha \in \mathbb{R}||) is the singe trainable parameter. (||(p||) is a precision hyperparameter, more on this later.) All you need to get 100% on ARC-AGI-2 is to set ||(\alpha||) to
p=8
len(alpha)=260091 digits
alpha=0.76059909954446680055519182637612404564952882608728406710332547552128446698293425221832975998898637236392205440417981617949548706406387030215295746057916672370704613139993102981520849196296541741232578489544689528846131754394446902690191625779049723017787574644995645998191196995652299872827305403826756449151125077232068806629551684890541253359837329652493258169800543968350639741142817814171771642248712635256943748361193985927343404950453292524945805333934593051464400368944775599614089386320090273869491583657873220635267085752381431568997047115636182977812657757703361060373156080128282582144284187660985488238464936573395047573286639794573061683106383780627206026056150656838337588742335170670163421547280089023114092731598196680570418789874360527785012620300750930571954145011629243254516400206074041792073533356634146282504823968716433512687354617522447535226537565807236324564511110530062555438093437991795253214900545506687774536460148324596924222765480221641621437626327952134561001137023114376121540714156077998979093947571760303967431735253560946726570431340478430446602897672186508688227963721583043604075440291847665238470622066363109790582849794551747780485489595489733526399388459089360532382024529983473279000118880550004458935134473467937295051711283017650338558799208485823692220113215500266839592398203647032543908678681690879298999981442507542699041885524438564023588682378780079564157156045238634045398695077157108768698635811519895727218480343642120199553556922633561513832993044251371733496713714038013023954617181980966126968599387312241882727248751576631562411547791297718419456595377424699163855402216397498164401130962968790610811366593327400604013568472112487874809243504048659211852460086449909371510922263800983013104904627190443959378599852522275841718258587191805316977713078922928979606542956843709965037688753815417491928819404900356691314870543851739837241147833212652252936159211863971744398094927646740679199631006426174223380727505335307167988032644482607296973649537963162183440473216940605032558101492556872708356280796276003648091179335379035258289160415302359363858900666153704691764931925925534406272390086086237329041610751547532019997897493078792907406941578146573475206151497477485229315269180219574632906375189695908689730230717428916617325031998926780420806061386666046378583550071837247219466671697801843275332629753429308619047895535595684965817408085518888469910885027747090610603268324756078382749082990796132294651696881962928843629666725462682052451754753210899245133102912862225695572223573065210237545360047657039153983266072141586295117635668640223145638447889078773869374500518526813523569610350738113091270685978352989525552843022947752887419320518566118681697782148121899491792256309190853432950405647536031737543390421102237554138964154770691717834238142835295903088016342454100425770493220937550307457687387407409126952330334735420567375549795107901955493785165495953409323894060830435620570206635849734662458737137483566337649534813334036348785228898195429450462856437144411867635374055751693375071803133807123831194651089909562997282413021342896561111606763292751884999306433844319748614157717565114832200109899469975816243813734116195852267016018802776752909623986709057339404407174549479917623262292240692002948370839150438273618393548860906396549033845355030052330412431992551370306302513601841256455352161676868724062742771044714295698520709295655308658285122710482792611122497388344593857474560674622871831336277084951405000971113340387563469498883887914139569735935236194021553028097485092302193506412589956409691851635642983987557063969527137748846851575268282918423430404714076185770651479593680730853234713962389176638219778886764674683880048309236507035373824040232233029653571112335890752198564060769684218360193945775160795150387853632496549813389083360477029277096925068714425757948063374241049937951042803950342033445371303446297868003510919059361392419647184606546262096418104251841412863845536203737205379212842289342292425511612761797538648763406643439484569320659994291100675343273494669834294803734900203737013417100118038378603369901381043977052704473311759416532482038269394632551113175893258270851602265446447153690360333251382016326750069857718712564112021845023970168381605698323370567169959382223112364162500269668256178549619453546360694675626436892488960735152429417700094916671647123637211445155968709499281655596987120695031551539821456765527088897416280303321025535004008268548802003627233782548010446344265286141915222903410738787642286337933982028810804614620125176438395819871970310118074213659161270060303320147119740836883503451883920252341235864479602200143227174386696981900286498662348078264892352177818224004514752719165951094725795533280934772262927043111481494055926359424235970372517366815655300580013381348371759046046757473872400568034434821922993214630315067626807995383783042059170832893457171236288972797216424484243452006314419875885003142696934614100686515162788694105289772813597152167946168786411249023743671931125014764497751746904121124768439753373523227956202640430097973548435354421886542664469609014595268032114191836055029851062320977153773519695423715145616656763470440175259897425518305743905458086381771427323082710416295272874800283981121797120387330285020531180553330873675973570329780940699892742659404700958312842654586541380065209576923861953494953244980589742400910631653909675098367373824932315128757405422051078783149635657283367454784236047812606123857121673521141126766180764298752559700776860395728257996327358401478326259259581959799308176211406304030132166284562177971066260407527995949612839043009242449428647277062867168836292110234255156931233274729663376277524208114248267584966459255180803428756039291103438018453955386531039465367863091803176115996981580478418519447947178777991641391483748965509969338227280424957069644781368246006940789745400817158831463264620202428306475038428611078677821771576377491124868731029308476997399021578735567393066015642577983921537588625044630586559382290440763847114321212536067418322983439160609583436016154595162039972480980008332228395199864804623366206046287202278433837789586772432779453559606141046902293501407679939567136846571571044081627160686123718818620365067743226481257586704522628234395828674169980644108757404872121179081250052105606280632371512636304875614875331673091940145417773319286941057345915626255651256729555241877906619662397348792553925012003504573694580532849897401247362118653720468736926707714573232436483875436639567948796062100481620396560271087641548481214783088169791478644511421343721492599932808338944442497931996750503707235112639922385857006307374476783681421229116265172974206771525132488764702906253909587073474212412935113386687248996231488463264927114176176606782589023428441986080284180720406177115214452516286888557188451460815210496326837237342356812415596479229526963796184718103077582460237516373032222533111717015708360009181166186690893761125871866251795808680194454675535629991894668957901068786133880222894562528879618149779133631559413294408508925660066552175982654999623437731390458892269796380923510697846674851511524236432846015453841617878844151495980039563576277468710559559504734256804555726188729215422981580796997679996581269745921191688088036166307731239199049156530789760311766256833468490055725653931258165633614413547709825554792482801243007903177214026017284086802906815362569255783313807919992331182775130760898847381443827489130336791007435996494988663449256356596407576032037042868049377909937976049387851484409322778626321293144713204042513873194660105633232156901765941969751014202828772356314444902651251269300918644946117200428049344749431282107095654700352461861678601623592735881068759036403473880535373166022301274570514276804616802944429547142667545675143272142233592045135545713589472102792508441269682856084437121442734453596431049608610221712876070764938673298309988081317006986451486585275957574350389443844496652865513850933422222636435646808265687072317060243536366215919702941680133258636467236343604460913909796315104891664793520407151458107200330377393189336723045525364105197618678446866094876776848855145935421068170006587555400643512387023828224954504917720764100636200870509420992454158888516314733399981887759362941973842609558522566136501600005644156223359471562815428537113376652186934562870261429731322862610015089495425001449434545412102225919924752872028502296356828005239492882941451727218054065987947481435028418402731328638226359122882508844898430328384505492681038657793082287020532873923483089778902549365648252634899913502774099888711917849515178703156937257827721341028407183500575227930534413117949974122387752675340845477960971741691484023286722182936686890443041556517488002348174742780584563327505255949041342212396547936708911843336538611672001659958722287011009586434792648803519492611640809174833433699160739691715399816525889574764376903304639463002159954653568953732482568617001962812913542623874561154246160760917505884553729053860769351026228431265217434495664888734090602779849054111646975721102984229708675731050327792231950360663655358601924534192157063431462199691679554980955937647441387119458510455722292254930602000085017298529943018391539707128115102269103636130391850166105780428390896371390288202528948283189290089607075758795759210654736664310179145536021185898118071999824826475858149963386764096920104575668186308592692256147392895871823073456433440211252581338448477237978225232410058902652561385066844893333838747728803852386387116824664646824817016036916255256755661471496476513928593768702338738478831308164254414245655118209131884370225087353169977898716573363356970996025441219355836090236496022132391110897791070642850110249138078715353935306599126752466095648124899980927786228296878603245860532827519988760643395988696926590071732290612978947566092627148724282313454981871542909915965930571941721513364476016868409145994772071192490287994289503839837245950902627121243405749749445336817
and you'll get a perfect score on the public eval set of ARC-AGI-2! (Feel free to scroll horizontally. Only the first 10,000 digits of ||(\alpha||) are shown.) This number is 260,091 digits long and is effectively god in box, right? One scalar value that cracks one of the most challenging AI benchmarks of our time. Sounds pretty impressive, right? Unfortunately, it's complete nonsense. There is no learning or generalization. What I've really done here is train on the public eval set of ARC-AGI-2 and then use some clever mathematics from chaos theory to encode all the answers into a single, impossibly dense parameter. Rather than a breakthrough in reasoning, it's a very sophisticated form of cheating. The model scores 100% on the public eval set of ARC-AGI-2 but would score 0% on the private eval set of ARC-AGI-2. Using chaos theory, topological conjugacy, and arbitrary precision arithmetic, the one-parameter model takes overfitting to the extreme. It is an absurd thought experiment taken seriously. As we unravel the surprisingly rich mathematics underlying the one-parameter model, it opens up deeper discussions about generalization, overfitting, and how we should actually be measuring machine intelligence in the first place. Let me show you how it works.
The one-parameter model in a nutshell.

ARC-AGI

"Intelligence is measured by the efficiency of skill-acquisition on unknown puzzles. Simply, how quickly can you learn new skills?" - ARC-AGI creators
Too many benchmarks measure how good AI models are at a particular skill rather than measuring how good they are at acquiring a new skill. ARC-AGI-1 tries to address this by measuring how well AI models can generalize to unseen puzzles. More recently, ARC-AGI-2 was released as a more challenging follow up to ARC-AGI-1. ARC-AGI-2 will be the focus of our blog. ARC-AGI-2 consists of visual grid-based reasoning puzzles, similar to an IQ-test. Each puzzle provides several example image pairs that demonstrate an underlying rule and a question image that requires applying that rule. Each image is an n x m matrix (list of lists) of integers between ||(0||) and ||(9||) where ||(1 \leq n, m \leq 30||). To display an image, we simply choose a unique color for each integer. As an example,
This puzzle contains 3 example input-output pairs that demonstrate the rule. Given these 3 examples and the question input, we have to infer the hidden rule and predict the question output. Here the hidden rule is straightforward: take the colored lines from the input and line them up next to each other on top of the light gray square without changing their order. The question output is
Here we show the numbers for clarity. Here is another puzzle
From the three examples, we learn the hidden rule: add a red square between any two blue squares that have exactly one empty cell between them horizontally. The question output is
There are hundreds of puzzles like this in ARC-AGI-2. Solving each puzzle requires deducing new patterns and generalizing to unforeseen puzzles, something it is quite hard for the current crop of AI models.
Performance on private eval set of ARC-AGI-2. Retreived from https://arcprize.org/leaderboard on January 30th, 2026.
When I first wrote this blog in August, the world’s best models struggled to crack ||(20\%||) on ARC-AGI-2. Today, the landscape has shifted: GPT-5.2 Pro leads with ||(90.5\%||), though it costs a steep ||(\$11.65||) per puzzle. Meanwhile, Gemini 3 Flash Preview offers a more efficient middle ground, solving ||(84.7\%||) of puzzles at just ||(\$0.174||) each. While many models now achieve impressive scores, they remain massive—often housing trillions of parameters. From a "tokenomics" perspective, this is still expensive, e.g. the leaner GPT-5 mini costs ||(\$2||) per ||(1M||) output tokens. This gap between high performance and high cost is why the $1,000,000 ARC Prize exists: the goal is to find an open-source solution that is both highly capable and significantly cheaper than today's giants.

The HRM Drama

In July, HRM released a 27M parameter model inspired by the brain's "slow" and "fast" loops. It scored 40.3% on ARC-AGI-1, crushing larger models like o3-mini-high (34.5%) and Claude-3.7-8k (21.2%).
HRM scores on public eval set of ARC-AGI-1 and ARC-AGI-2.
The results almost seemed to be too good to be true. How can a tiny 27M parameter model from a small lab be crushing some of the world's best models, at a fraction of their size? Turns out, HRM trained on the examples, not questions, of the public eval set.
Screenshot of HRM paper showing that HRM trained on the public eval set of ARC-AGI-1.
They admitted to training on "all input-output example pairs in the training and the evaluation sets" (emphasis mine). Does this actually count as "training on test"?
The HRM authors never actually trained on the the questions used to measure model performance, just the examples associated with them. This controversy set AI Twitter on fire [1, 2, 3 4 5]! The ARC-AGI organizers ultimately accepted the HRM submission, indicating it is fine to train on the examples of the public eval set. Twitter agreed too. But buried in a GitHub thread, HRM's lead author, Guan Wang, made an offhand comment that caught my attention:
"If there were genuine 100% data leakage - then model should have very close to 100% performance (perfect memorization)." - Guan Wang
That line stuck with me. If partial leakage gets you ||(40.3\%||) on ARC-AGI-1, what happens with complete leakage? If we train on the actual eval questions, not just eval examples, can we hit ||(100\%||)? Can we do it with even fewer parameters than HRM (27M) or TRM (7M)? And can we do it on the more challenging ARC-AGI-2 instead of ARC-AGI-1? How far can we push this?

Chaos Theory

"Chaos is what killed the dinosaurs, darling." - J.D. in Heathers
My goal was simple: create the smallest possible model that gets 100% on ARC-AGI-2 by training on the entire public eval set, both examples and questions. This goes beyond HRM's approach (which only trained on the examples) into more questionable territory: training on both the examples and questions of the public eval set. Now, the obvious approach would be to build a dictionary - just map each input directly to its corresponding output. But that's boring and lookup tables aren't nice mathematical functions. They're discrete, discontinuous, and definitely not differentiable. We need something else, something more elegant and interesting. To do that, we are going to take a brief detour into the world of chaos theory.
Note: Steven Piantadosi pioneered this technique in One parameter is always enough, though I first learned about it through Laurent Boué's Real numbers, data science and chaos: How to fit any dataset with a single parameter. Both papers are true gems due to their sheer creativity.
In chaos theory, the dyadic map ||(\mathcal{D}||) is a simple one-dimensional chaotic system defined as ||[ \begin{align} \mathcal{D}: [0, 1] \to [0, 1] && \mathcal{D}(a) &= (2a) \bmod 1. \tag{2} \end{align} ||]It takes in any number between 0 and 1, doubles it, and throws away the whole number part, leaving just the fraction. That's it.
In chaos theory, we often study the orbit or trajectory of a chaotic system, the sequence generated by applying the chaotic map to itself over and over again. Starting with some number ||(a||), we apply our map to get ||(\mathcal{D}(a)||), and again to get ||(\mathcal{D}(\mathcal{D}(a))||), and so on and so forth. Let ||[ \begin{align*} \mathcal{D}^k(a) & := \underbrace{(D \circ ... \circ D)}_{k}(a) = (2^k a) \mod 1 \tag{3} \end{align*} ||]mean we apply the dyadic map ||(k||) times to ||(a||). What does the orbit ||((a, \mathcal{D}^1(a), \mathcal{D}^2(a), \mathcal{D}^3(a), \mathcal{D}^4(a), \mathcal{D}^5(a))||) look like?
Initial Value (||(a||))Dyadic Orbit
||(0.5||)||((0.5, 0.0, 0.0, 0.0, 0.0, 0.0)||)
||(1/3||)||((0.333, 0.667, 0.333, 0.667, 0.333, 0.667)||)
||(0.431||)||((0.431, 0.862, 0.724, 0.448, 0.897, 0.792)||)
The first orbit seems to end in all zeros, the second bounces back and forth between ||(0.333||) and ||(0.667||), and the third seems to have no pattern at all. On the surface, these orbits do not have much in common. But if we take a closer look, they all share the same underlying pattern. Let's revisit the third orbit for ||(a = 0.431||) but this time we will analyze its binary representation:
IterationsDecimalBinaryObservation
0||(a = 0.431||)||(\text{bin}(a) = 0.011011...||)Original number
1||(D^1(a) = 0.862||)||(\text{bin}(D^1(a)) = 0.11011...||)First bit of ||(a||) ||((0)||) removed
2||(D^2(a) = 0.724||)||(\text{bin}(D^2(a)) = 0.1011...||)First two bits of ||(a||) ||((01)||) removed
3||(D^3(a) = 0.448||)||(\text{bin}(D^3(a)) = 0.011...||)First three bits of ||(a||) ||((011)||) removed
4||(D^4(a) = 0.897||)||(\text{bin}(D^4(a)) = 0.11...||)First four bits of ||(a||) ||((0110)||) removed
5||(D^5(a) = 0.792||)||(\text{bin}(D^5(a)) = 0.1...||)First five bits of ||(a||) ||((01101)||) removed
Looking at the Binary column, we see that every time we apply the dyadic map, the most significant bit is removed! We start off with ||(0.011011||), and then applying ||(\mathcal{D}||) once removes the leftmost ||(0||) to get ||(0.11011||), and applying ||(\mathcal{D}||) another time removes the leftmost ||(1||) to get ||(0.1011||). Although the orbit appears irregular in its decset_ylabel(r"$\mathcaimal representation, a clear pattern emerges from the binary representation. What is going on here? Each time we call ||(D(a) = (2a) \mod 1||), we double ||(a||), i.e. ||(2a||), and truncate it, i.e. ||(\mod 1||). The doubling shifts every binary digit one place to the left and the truncation throws away whatever digit lands in the one's place. In other words, each application of ||(\mathcal{D}||) peels off the first binary digit and throws it away. If we apply the dyadic map ||(k||) times, we remove the first ||(k||) bits of ||(a||).

The Dyadic Map As An ML Model

"When I grow up, I'm going to be a real boy ML Model" - the Dyadic Map if it were starring in Pinocchio
We've discovered something remarkable: each application of ||(\mathcal{D}||) peels away exactly one bit. But if the dyadic map can systematically extract bits, is it possible to put information in those bits in the first place and intentionally extract them later? Can we encode our dataset's bits into a number (model.fit) and then use the dyadic map as the core of a predictive model, extracting out the answer bit by bit (model.predict)? In other words, can we turn the dyadic map into an ML model?

A Worked Example

Suppose our dataset contains the three numbers we saw before ||[ \mathcal{X} = \{x_0, x_1, x_2\} = \{0.5, 1/3, 0.431\}. ||]
Let's convert each number to binary and look at the first ||(p=6||) binary digits for simplicity: ||[ \mathcal{B} = \{b_0, b_1, b_2\} = \{ \text{bin}_6(x_0), \text{bin}_6(x_1), \text{bin}_6(x_2)\} = \{0.100000, 0.010101, 0.011011\} ||]where the function ||(b_i = \text{bin}_p(x_i)||) converts decimal numbers to ||(p||)-bit binary numbers. Now comes the clever part: we glue these binary strings together, end to end: ||[ b = 0. \underbrace{100000}_{b_0} \underbrace{010101}_{b_1} \underbrace{011011}_{b_2} ||]and convert this binary string back to decimal ||[ \alpha = \text{dec}(b) = 0.50522994995117188 ||]
The number ||(\alpha||) is carefully engineered so that it is a decimal number whose bits contain our entire dataset's binary representation. That's right: we've just compressed our entire dataset into a single decimal number! We only have one parameter, not billions here! This is a very simple, stupid version of ||(\alpha = \text{model.fit}(\mathcal{X})||).
But here's the question: given ||(\alpha||), how do we get our data ||(\mathcal{X}||) back out? How do we do ||(\tilde{x}_i = \text{model.predict}(i, \alpha)||)? This is where the dyadic map becomes our extraction tool.
Step 1. Trivially, we know the first 6 bits of ||(\alpha||) contains ||(b_0||). ||[ \begin{align*} \alpha &= 0.50522994995117188 \\ \text{bin}(\alpha) &= 0.\underbrace{100000}_{b_0}\underbrace{010101}_{b_1}\underbrace{011011}_{b_2} = 0.100000010101011011 \end{align*} ||]So we'll just record the first ||(6||) bits of ||(\alpha||) to get ||(b_0||). ||[ \begin{align*} b_0 &= \text{bin}_6(\alpha) = 100000 \end{align*} ||]If we convert this number ||(b_0||) back to decimal, we'll recover our original data, up to the first ||(6||) digits of precision. ||[ \begin{align*} \tilde{x}_0 &= \text{dec} ( b_0 ) = 0.500000 \end{align*} ||]Now from ||(\alpha||) we've extracted the prediction ||(\tilde{x}_0 = 0.500000||) which matches exactly the ||(0||)th sample of our dataset ||(x_0 = 0.5||).
Step 2. To predict the next number, ||(\tilde{x}_1||), remember that each application of ||(\mathcal{D}||) strips away the leftmost binary digit. So ||[ \begin{align*} D^6(\alpha) &= 0.334716796875 \end{align*} ||]strips away the first ||(6||) bits of ||(\alpha||), which just removes ||(b_0||), and leaves us with ||(b_1, b_2||) ||[ \begin{align*} \text{bin}(D^6(\alpha)) &= 0.\underbrace{\hspace{1cm}}_{b_0}\underbrace{010101}_{b_1}\underbrace{011011}_{b_2} = 0.010101011011 \end{align*} ||]Like before, we'll then record the first ||(6||) bits of ||(D^6(\alpha)||) to get ||(b_1||) ||[ \begin{align*} b_1 &= \text{bin}_6(D^6(\alpha)) = 010101 \end{align*} ||]and convert ||(b_1||) back to decimal to get ||(\tilde{x}_1||) ||[ \begin{align*} \tilde{x}_1 &= \text{dec} (b_1) = 0.328125 \end{align*} ||]Here our prediction ||(\tilde{x}_1 = 0.328125||) is slightly off from the true value ||(x_1 = 1/3||) due to the limits of ||(6||)-bit precision. If we'd have more digits of precision and increase ||(p||), ||(\tilde{x}_1||) would be closer to ||(x_1||).
Step 3. To get the next number, ||(\tilde{x}_2||), apply ||(\mathcal{D}||) another 6 times to remove a total of ||(12||) bits from ||(\alpha||), ||[ \begin{align*} D^{12}(\alpha) &= 0.421875 \end{align*} ||]which strips off ||(b_0, b_1||) and leaves us with just ||(b_2||) ||[ \begin{align*} \text{bin}(D^{12}(\alpha)) &= 0.\underbrace{\hspace{1cm}}_{b_0}\underbrace{\hspace{1cm}}_{b_1}\underbrace{011011}_{b_2} = 0.011011 \end{align*} ||]Like before, we'll then record the first ||(6||) bits of ||(D^{12}(\alpha)||) to get ||(b_2||) ||[ \begin{align*} b_2 &= \text{bin}_6(D^{12}(\alpha)) = 011011 \end{align*} ||]and convert ||(b_2||) back to decimal to get ||(\tilde{x}_2||) ||[ \begin{align*} \tilde{x}_2 &= \text{dec} (b_2) = 0.421875 \end{align*} ||]Notice again that our prediction ||(\tilde{x}_2 = 0.421875||) is slightly off from the true value ||(x_2 = 0.431||) due to the limitations of ||(6||)-bit precision.
Let ||[ \begin{align*} \tilde{\mathcal{X}} &= \big \{\tilde{x}_0, \tilde{x}_1, \tilde{x}_2 \big\} = \big \{ 0.500000, 0.328125, 0.421875 \big \} \end{align*} ||]be the predictions made by our strange dyadic model. If everything is correct, our predicted dataset ||(\tilde{\mathcal{X}}||) should perfectly equal our original dataset ||(\mathcal{X}||) up to the first ||(p||) bits.
These 3 steps are summarized in the table below.
Iteration ||(i||)||(ip||) bits removed||(\mathcal{D}^{ip}(\alpha)||) in decimal||(\mathcal{D}^{ip}(\alpha)||) in binary||(b_i||), the first ||(p||) bits of ||(\mathcal{D}^{ip}(\alpha)||) in binary||(\tilde{x}_i||), the first ||(p||) bits of ||(\mathcal{D}^{ip}(\alpha)||) in decimal
||(0||)||(0 \cdot 6 = 0||)||(\alpha = 0.50522994995117188||)||(\text{bin}(\alpha) = 0.\underbrace{100000}_{b_0}\underbrace{010101}_{b_1}\underbrace{011011}_{b_2}||)||(b_0 = 010101||)||(\tilde{x}_0 = 0.500000||)
||(1||)||(1 \cdot 6 = 6||)||(\mathcal{D}^6(\alpha) = 0.33471679687500000||)||(\text{bin}(D^6(\alpha)) = 0.\underbrace{\hspace{1cm}}_{b_0}\underbrace{010101}_{b_1}\underbrace{011011}_{b_2}||)||(b_1 = 010101||)||(\tilde{x}_1 = 0.328125||)
||(2||)||(2 \cdot 6 = 12||)||(\mathcal{D}^{12}(\alpha) = 0.42187500000000000||)||(\text{bin}(D^{12}(\alpha)) = 0.\underbrace{\hspace{1cm}}_{b0}\underbrace{\hspace{1cm}}_{b1}\underbrace{011011}_{b_2}||)||(b_2 = 011011||)||(\tilde{x}_2 = 0.421875||)
In decimal, we go from ||(\alpha = 0.50522994995117188||) to ||(\mathcal{D}^6(\alpha) = 0.33471679687500000||) and then to ||(\mathcal{D}^{12}(\alpha) = 0.42187500000000000||). Although this pattern looks completely random, we are shifitng bits with superb precision. This is anything but random.
Think about what we've accomplished here. We just showed that you can take a dataset compress it down to a single real number, ||(\alpha||). Then, using nothing more than repeated doubling and truncation via ||(\mathcal{D}||), we can perfectly recover every data point ||(\tilde{\mathcal{X}}||) up to ||(p||) bits of precision. The chaotic dynamics of the dyadic map, which seemed like a nuisance, turns out to be the precise mechanism we need to systematically access the desired information. Perhaps we can encode the ARC-AGI-2 dataset using this method...

The Algorithm

The algorithm itself is deceptively simple once you see the pattern:

Encoding Algorithm ||(g(p, \mathcal{X})||): Given a dataset ||(\mathcal{X} = \{x_0, ..., x_{n-1}\}||) where ||(x_i \in [0, 1]||) and precision ||(p||), encode the dataset into ||(\alpha||):

  1. Convert each number to binary with ||(p||) bits of precision ||(b_i = \text{bin}_p(x_i)||) for ||(i=0, ..., n-1||)
  2. Concatenate into a single binary string ||(b = b_0 \oplus ... \oplus b_{n-1}||)
  3. Convert to decimal ||(\alpha = \text{dec}(b)||)
  4. Return ||(\alpha||)
Mathematically, we express the encoder as the function ||(g: [0, 1]^n \to [0, 1]||) ||[ \begin{align*} \alpha &= g(p, \mathcal{X}) := \text{dec} \Big( \bigoplus_{x_i \in \mathcal{X}} \text{bin}_p(x_i) \Big) \tag{4} \end{align*} ||]where ||(\oplus||) means concatenation. The result is a single decimal number ||(\alpha||) with ||(np||) bits of precision that contains our entire dataset. We can now discard ||(\mathcal{X}||) entirely and recover sample ||(x_i||) by decoding ||(\alpha||).

Decoding Algorithm ||(f_{\alpha, p}(i)||): Given sample index ||(i \in \{0, ..., n-1\}||), precision ||(p||), and the encoded number ||(\alpha||), recover sample ||(\tilde{x_i}||):

  1. Apply the dyadic map ||(\mathcal{D}||) exactly ||(ip||) times ||(\tilde{x}'_i = \mathcal{D}^{ip}(\alpha) = (2^{ip} \alpha) \mod 1||)
  2. Extract the first ||(p||) bits of ||(\tilde{x}'_i||)'s binary representation ||(b_i = \text{bin}_p(\tilde{x}'_i)||)
  3. Convert to decimal ||(\tilde{x}_i = \text{dec}(b_i)||)
  4. Return ||(\tilde{x}_i||)
Mathematically, we express the decoder as the function ||(f: \overbrace{[0, 1]}^{\alpha} \times \overbrace{\mathbb{Z}_+}^{p} \times \overbrace{[n]}^i \to [0, 1]||) ||[ \begin{align*} \tilde{x}_i &= f_{\alpha, p}(i) := \text{dec} \Big( \text{bin}_p \Big( \mathcal{D}^{ip}(\alpha) \Big) \Big) \end{align*} ||]Crucially, the precision parameter ||(p||) controls the trade-off between accuracy and storage efficiency. The larger ||(p||) is, the more accurately our encoding, but the more storage it takes up. Our error bound is ||[ |\tilde{x}_i - x_i | < \frac{1}{2^p} ||]because we don't encode anything after the first ||(p||) bits of precision. What makes this profound is the realization that we're not really "learning" anything in any conventional sense. We're encoding it directly into the bits of a real number, exploiting its infinite precision, and then using the dyadic map to navigate through that number and extract exactly what we need, when we need it. From this perspective, the dyadic map resembles a classical ML model where the encoder ||(g||) acts as model.fit() and the decoder ||(f||) acts as model.predict().

Applying Some Makeup

"You don’t want to overdo it with too much makeup" - Heidi Klum
How do we go from the ugly, discontinuous decoder function ||[ f_{\alpha,p}(i) := \text{dec} \Big( \text{bin}_p \Big( \mathcal{D}^{ip}(\alpha) \Big) \Big) ||]to that beautiful function I promised you at the start of the blog ||[ f_{\alpha, p}(i) = \sin^2 \Big( 2^{i p} \arcsin^2(\sqrt{\alpha}) \Big) ? ||]In this section we will "apply makeup" to the first function to get it looking a bit closer to the second. To do this, we will need another one-dimensional chaotic system, the logistic map. The logistic-map at ||(r=4||) on the unit interval is defined as ||[ \begin{align*} \mathcal{L}: [0, 1] \to [0, 1] && \mathcal{L}(a_L) &= 4 a_L (1 - a_L) \tag{6} \end{align*} ||]which seems quite different than the familiar dyadic map ||[ \begin{align*} \mathcal{D}: [0, 1] \to [0, 1] && \mathcal{D}(a_D) &= (2 a_D) \mod 1 \end{align*} ||]One is a bit-shifting operation, the other is a smooth parabola that ecologists use to model population growth. (Note: previously ||(a||) was the input to the dyadic map but from now on ||(a_D||) will be the input to the dyadic map to differentiate it from ||(a_L||), the input to the logistic map.)
What does the logistic orbit ||((a_L, \mathcal{L}^1(a_L), \mathcal{L}^2(a_L), \mathcal{L}^3(a_L), \mathcal{L}^4(a_L), \mathcal{L}^5(a_L))||) look like? Similar or different to the dyadic orbit ||((a_D, \mathcal{D}^1(a_D), \mathcal{D}^2(a_D), \mathcal{D}^3(a_D), \mathcal{D}^4(a_D), \mathcal{D}^5(a_D))||)?
Initial Values ||(a_L, a_D||)Logistic OrbitDyadic Orbit
||(0.5||)||((0.5, 1.0, 0.0, 0.0, 0.0, 0.0)||)||((0.5, 0.0, 0.0, 0.0, 0.0, 0.0)||)
||(1/3||)||((0.333, 0.888, 0.395, 0.956, 0.168, 0.560)||)||((0.333, 0.667, 0.333, 0.667, 0.333, 0.667)||)
||(0.43085467085||)||((0.431, 0.981, 0.075, 0.277, 0.800, 0.639)||)||((0.431, 0.862, 0.724, 0.448, 0.897, 0.792)||)
At first glance, the logistic and dyadic maps create orbits that look nothing alike: the first orbits differ by a single element while the second and third appear random, unrelated. However, topological conjugacy tells us these two maps are actually the same. The logistic and dyadic maps have identical orbits, the exact same chaotic trajectories, simply expressed in different coordinates. The logistic map, for all its smooth curves and elegant form, is actually doing discrete binary operations under the hood, just like the dyadic map (and vice versa). Formally, two functions are topologically conjugate if there exists a homeomorphism, fancy talk for a change of coordinates, that perfectly takes you from one map to another. The change of coordinates here is ||[ \begin{align*} \phi: [0, 1] \rightarrow [0, 1] && a_L &= \phi(a_D) = \sin^2(2 \pi a_D) \tag{7} \\ \phi^{-1}: [0, 1] \rightarrow [0, 1] && a_D &= \phi^{-1}(a_L) = \frac{1}{2 \pi} \arcsin (\sqrt{a_L}) \tag{8} \end{align*} ||]
Intuitively, the function ||(\phi(a_D) = \sin^2(2 \pi a_D)||) oscillates between ||(0||) and ||(1||) with a period of ||(1||), completing a cycle everytime ||(a_D||) reaches a new integer value. This behaviour mimics the modulo operation from the dyadic map ||(\mathcal{D}(a_D) = (2 a_D) \mod 1||) which similarly keeps outputs bounded within ||([0,1)||) and repeats at each integer boundary. We go back and forth between the dyadic and logistic spaces with these key equations ||[ \begin{align*} \mathcal{L}^k(a_L) &= \phi(\mathcal{D}^k(a_D)) \tag{10} \\ \mathcal{D}^k(a_D) &= \mathcal{L}^k(\phi^{-1}(a_L)) \tag{11} \end{align*} ||]
  • The first equation says that to transform dyadic space into logistic space, we apply ||(\phi||) to the dyadic outputs ||(\mathcal{D}^k(a_D)||) and get ||(\mathcal{L}^k(a_L)||).
  • The second equation says that to transform logistic space into dyadic space, we apply the inverse ||(\phi^{-1}||) to the input ||(a_L||) before applying the logistic map ||(\mathcal{L}||) and get ||(\mathcal{D}^k(a_D)||).
These equations hold for all iterations ||(k||) , meaning ||(\phi||) and ||(\phi^{-1}||) perfectly relate every single point in the dyadic and logistic orbits. Think of these two orbits existing in parallel universes with ||(\phi||) and ||(\phi^{-1}||) acting as the bridges between ||(\mathcal{D}||) and ||(\mathcal{L}||).
Topological conjugacy between the dyadic and logistic map.
Previously the dyadic and logistic orbits appeared totally unrelated. But let's now revisit the orbits for ||(a_D = a_L = 0.431||).
  • Starting from the dyadic orbit ||((0.431, 0.862, 0.724, 0.448, 0.897, 0.792)||), applying ||(\phi||) to after each dyadic map (eq 10) yields the logistic orbit ||((0.431, 0.981, 0.075, 0.277, 0.800, 0.639)||).
  • Starting from the logistic orbit ||((0.431, 0.981, 0.075, 0.277, 0.800, 0.639)||), applying ||(\phi^{-1}||) before each logistic map (eq 11) yields the dyadic orbit ||((0.431, 0.862, 0.724, 0.448, 0.897, 0.792)||).
Although both these orbits look completely unrelated, they are perfectly connected to one another through ||(\phi||) and ||(\phi^{-1}||).

A New Algorithm

Let's now use the smooth and differentiable logistic map ||(\mathcal{L}||) as "makeup" to hide the ugly and discontinuous dyadic operation ||(\mathcal{D}||) in our algorithm. Remember, we still need to be in the dyadic space so our clever bit manipulations will still work out. Here's the strategy:
  1. Encoder: Work in dyadic space where bit manipulation works (use ||(\phi||)) but at the very end output ||(\alpha||) in logistic space (use ||(\phi^{-1}||))
  2. Decoder: Work entirely in smooth logistic space using the conjugacy relationship
This gives us two new beautiful encoder/decoder algorithms where the main changes are bolded:

Encoding Algorithm ||(g(\mathcal{X}, p)||): Given a dataset ||(\mathcal{X} = \{x_0, ..., x_n\}||) where ||(x_i \in [0, 1]||) and precision ||(p||), encode the dataset into ||(a_L||):

  1. Transform data to dyadic coordinates: ||(z_i = \phi^{-1}(x_i) = \frac{1}{2 \pi} \arcsin⁡( x_i )||) for ||(i=1, ..., n||)
  2. Convert each transformed number to binary with ||(p||) bits of precision: ||(b_i = \text{bin}_p(z_i)||) for ||(i=1, ..., n||)
  3. Concatenate into a single binary string ||(b = b_0 \oplus ... \oplus b_n||)
  4. Convert to decimal ||(a_D = \text{dec}(b)||)
  5. Transform to logistic space: ||(\alpha = a_L = \phi(a_D) = \sin^2(2 \pi a_D)||)
  6. Return ||(\alpha||)
Mathematically, the encoder is defined as ||[ \begin{align*} \alpha &= g(p, \mathcal{X}) := \phi \bigg( \text{dec} \Big( \bigoplus_{x_i \in \mathcal{X}} \text{bin}_p(\phi^{-1}(x_i)) \Big) \bigg) \end{align*} ||]where ||(\oplus||) means concatenation. Like before the result is a single, decimal, scalar number ||(\alpha||) with ||(np||) bits of precision that contains our entire dataset. However, this time ||(\alpha||) is in logistic space. We can now discard ||(\mathcal{X}||) entirely and recover sample ||(x_i||) by decoding ||(\alpha||).

Decoding Algorithm ||(f_{\alpha, p}(i)||): Given sample index ||(i \in \{0, ..., n-1\}||), precision ||(p||), and the encoded number ||(\alpha||), recover sample ||(\tilde{x_i}||):

  1. Apply the logistic map ||(\mathcal{L}||) exactly ||(ip||) times ||(\tilde{x}'_i = \mathcal{L}^{ip}(\alpha) = \sin^2 \Big(2^{i p} \arcsin^2(\sqrt{\alpha}) \Big)||)
  2. Extract the first ||(p||) bits of ||(\tilde{x}'_i||)'s binary representation ||(b_i = \text{bin}_p(\tilde{x}'_i)||)
  3. Convert to decimal ||(\tilde{x}_i = \text{dec}(b_i)||)
  4. Return ||(\tilde{x}_i||)
Mathematically, the decoder is defined as ||[ \begin{align*} \tilde{x}_i &= f_{\alpha,p}(i) := \text{dec} \Big( \text{bin}_p \Big( \mathcal{L}^{ip}(\alpha) \Big) \Big) = \text{dec} \Big( \text{bin}_p \Big( \sin^2 \Big(2^{ip} \arcsin(\sqrt{\alpha}) \Big) \Big) \Big) \end{align*} ||]
We've taken the crude, discontinuous dyadic map and transformed it into something smooth and differentiable. The logistic map doesn't look like it's doing binary operations, but underneath the elegant trigonometry, it's performing exactly the same bit manipulations as its topological conjugate, the dyadic map. Indeed, the makeup looks pretty great! However, nothing is free. The cost of using the logistic map instead of the dyadic map is that our error is now ||(2 \pi||) times larger, ||[ |\tilde{x}_i - x_i | \leq \frac{2 \pi}{2^{p}} = \frac{\pi}{2^{p-1}} ||]We get this ||(2 \pi||) factor by noting that the derivative of ||(\phi||) is bounded by ||(2 \pi||) and applying the mean-value theorem. For a proof, see section 2.5 of Real numbers, data science and chaos: How to fit any dataset with a single parameter.
How did we get ||(\mathcal{L}^{ip}(\alpha) = \sin^2 \Big(2^{i p} \arcsin^2(\sqrt{\alpha}) \Big)||)? We just need to perform some simple algebraic manipulation with our equations: ||[ \begin{align*} \mathcal{L}^k(\alpha) &= \mathcal{L}^k(a_L) & \text{by $\alpha = a_L$} \\ &= \phi(\mathcal{D}^k(a_D)) & \text{by $(10)$} \\ &= \phi((2^k a_D) \mod 1) & \text{by $(3)$} \\ &= \phi(2^k a_D) & \text{by $(9)$} \\ &= \sin^2(2 \pi \cdot (2^k a_D)) & \text{by $(7)$} \\ &= \sin^2 \bigg(2 \pi 2^k \Big( \frac{1}{2 \pi} \arcsin(\sqrt{a_L}) \Big) \bigg) & \text{by $(8)$} \\ &= \sin^2 \Big(2^k \arcsin(\sqrt{a_L}) \Big) & \text{by simplification} \\ &= \sin^2 \Big(2^k \arcsin(\sqrt{\alpha}) \Big) & \text{by $\alpha = a_L$} \end{align*} ||]

Code Implementation

Now comes the moment of truth. We've built up all this beautiful math about chaos theory and topological conjugacy, but can we actually code it up? If you've been paying attention, there is one crucial implementation detail we have to worry about. If our dataset ||(\mathcal{X}||) has ||(n||) samples, each encoded with ||(p||) bits, ||(\alpha||) will contain ||(np||) bits. For ARC-AGI-2 with hundreds of puzzles and high precision, this could be millions of bits. Standard computers can only handle numbers with 32 or 64 bits. How do we even store ||(\alpha||), much less solve ARC-AGI-2 with it? The answer is simple: we can use an arbitrary precision arithmetic library like mpmath that can represent numbers with as many bits as we want. Instead of a regular Python float, we represent ||(\alpha||) as a mpmath float with ||(np||) bits of precision. We then run the decoder with mpmath operations and convert the final result back to a regular Python float. However, operations with arbitrary precision arithmetic libraries like mpmath tend to be significantly slower than regular floating point operations.
We implement the logistic encoder ||[ \alpha = g(p, \mathcal{X}) = \phi \bigg( \text{dec} \Big( \bigoplus_{x_i \in \mathcal{X}} \text{bin}_p(\phi^{-1}(x_i)) \Big) \bigg) ||]in code as
def logistic_encoder(X, precision, full_precision):
    # set the arbitrary precision before computing anything
    mp.prec = full_precision

    # 1. apply φ^(-1)
    phi_inv_decimal_list = phi_inverse(X)

    # 2. convert to binary
    phi_inv_binary_list = decimal_to_binary(phi_inv_decimal_list, precision)

    # 3. concatenate all binary strings together into a scalar
    phi_inv_binary_scalar = ''.join(phi_inv_binary_list)
    if len(phi_inv_binary_scalar) != full_precision:
        raise ValueError(f"Expected {full_precision} bits but got {len(phi_inv_binary_scalar)} bits.")

    # 4. convert to decimal
    phi_inv_decimal_scalar = binary_to_decimal(phi_inv_binary_scalar)

    # 5. apply φ
    alpha = phi(phi_inv_decimal_scalar)
    return alpha
We compute ||(\alpha||) in five steps using mpmath with precision set to ||(np||) bits. Crucially, step 4 produces an mpmath float with the full ||(np||) bits of precision, which we then transform in step 5 to get our final ||(np||)-bit parameter ||(\alpha||). Next, we implement the logistic decoder ||[ \tilde{x}_i = f_{\alpha, p}(i) = \sin^2 \Big( 2^{x p} \arcsin^2(\sqrt{\alpha}) \Big) ||]in code as
def logistic_decoder(alpha, full_precision, p, i):
    mp.prec = full_precision
    return float(Sin(2 ** (i * p) * Arcsin(Sqrt(alpha))) ** 2)
Again, we set the mpmath precision to ||(np||) bits and implement the decoder in a single line using mpmath's arbitrary-precision functions Sin, Arcsin, and Sqrt. That's it. Our entire encoder and decoder, the heart of our one-parameter model, is just a handful of lines and a bit of beautiful mathematics.
Our decoder is ||(f_{\alpha, p}(i) = \text{dec} \Big( \text{bin}_p \Big(\sin^2 \Big( 2^{x p} \arcsin^2(\sqrt{\alpha}) \Big) \Big) \Big)||) but our implementation drops the ||(\text{dec}(\text{bin}_p(\cdot))||). Why is this okay? Using mpmath allows us to remove the pesky ||(\text{dec}(\text{bin}_p(\cdot))||) operations from our decoder ||[ f_{\alpha, p}(i) = \text{dec} \Big( \text{bin}_p \Big( \mathcal{L}^{ip}(\alpha) \Big) \Big). ||]In our implementation, we use ||(\text{dec}(\text{bin}_p(\cdot))||) to truncate ||(\mathcal{L}^{ip}(\alpha)||) to exactly ||(p||) bits and then convert ||(f_{\alpha, p}(i)||) from a ||(p||)-bit mpmath number to a Python float32. During this conversion, Python copies the first ||(p||) bits of ||(f_{\alpha, p}(i)||) and then fills the remaining bits of the Python float32 (bits ||(p+1||) through ||(32||)) with random meaningless junk bits (assuming ||(p<=32||)). Since our model only guarantees accuracy for the first ||(p||) bits, these random bits don't matter. However, converting to binary and back is wildly expensive, especially when ||(\alpha||) contains millions of bits. Upon taking a closer look, we can, in fact, actually skip the entire ||(\text{dec}(\text{bin}_p(\cdot))||) step and convert ||(\mathcal{L}^{ip}(\alpha)||) directly to a Python float32. The first ||(p||) bits of ||(\mathcal{L}^{ip}(\alpha)||) still get copied correctly and bits ||(p+1||) through ||(32||) get filled with the higher-order bits of ||(\mathcal{L}^{ip}(\alpha)||) instead of random Python bits. Since our prediction only uses the first ||(p||) bits, these extra bits are irrelevant whether they come from Python junk or from the higher-order bits of our decoder. Removing ||(\text{dec}(\text{bin}_p(\cdot))||), our decoder simplifies to exactly what we promised at the start: ||[ f_{\alpha, p}(i) = \mathcal{L}^{ip}(\alpha) = \sin^2 \Big( 2^{x p} \arcsin^2(\sqrt{\alpha}) \Big) ||]This is amazing! Usually translating math into code turns beautiful theory into ugly, complicated messes. But surprisingly, leveraging mpmath has the opposite effect and actually makes our decoder even simpler.
To actually run logistic_encoder and logistic_decoder on ARC-AGI-2, we need three adjustments:
  1. Adjustment 1: Supervised learning. ARC-AGI-2 is a supervised problem with input-output pairs ||((X,Y)||), but our encoder only handles unsupervised data ||((X)||). Solution: ignore the input ||(X||) and only encode the outputs ||(Y||) since those are what we need to memorize.
  2. Adjustment 2: Shape handling. Our encoder expects scalars, not matrices. Solution: flatten matrices to lists for encoding and reshape back for decoding. For an m x n puzzle, we decode mn individual elements, running the decoder mn times per puzzle, not once. We never explicltly learn the order of inputs.
  3. Adjustment 3: Data scaling. ARC-AGI-2 uses integers ||(0-9||), but our encoder needs values in ||([0,1]||). Solution: use a MinMaxScaler to squeeze the data into the right range during encoding and unscale them during decoding. This changes the theoretical error bounds from ||(|\hat{y} - y| < \frac{\pi}{2^{p-1}}||) to ||(|\hat{y} - y| < R \Big( \frac{\pi}{2^{p-1}} + \epsilon \Big)||) where ||(R||) is the range and ||(\epsilon||) the clipping constant of the MinMaxScaler.
Why does MinMaxScaling change our error bound to ||(|\hat{y} - y| < R \Big( \frac{\pi}{2^{p-1}} + \epsilon \Big)||)? We scale the raw ARC-AGI data ||(y \in [0, 9]||) to the unit interval ||([0,1]||) using the minmax scaler which does a linear shift ||[ y_{\text{scaled}} = \frac{y - y_{\min}}{R} ||]and then clips to ||[ y_{\text{clipped}} = \text{clip}(y_{\text{scaled}}, \epsilon, 1-\epsilon). ||]Clipping introduces error bounded by: ||[ |y_{\text{clipped}} - y_{\text{scaled}}| \leq \epsilon \tag{1} ||]Our one-parameter model predicts ||(\hat{y}_{\text{scaled}} \in [0,1]||) with decoding error: ||[ |\hat{y}_{\text{scaled}} - y_{\text{clipped}}| \leq \frac{\pi}{2^{p-1}} \tag{2} ||]We rescale back to the original domain via ||(\hat{y} = \hat{y}_{\text{scaled}} \cdot R + y_{\min}||). Therefore, the total error is ||[ \begin{align*} |\hat{y} - y| &= |(\hat{y}_{\text{scaled}} \cdot R + y_{\min}) - (y_{\text{scaled}} \cdot R + y_{\min})| \\ &= R |\hat{y}_{\text{scaled}} - y_{\text{scaled}}| \\ &\leq R (|\hat{y}_{\text{scaled}} - y_{\text{clipped}}| + |y_{\text{clipped}} - y_{\text{scaled}}|) & \text{by the triangle inequality} \\ &= R \left(\frac{\pi}{2^{p-1}} + \epsilon\right) & \text{by equations (1) and (2)} \end{align*} ||]
With these adjustments, we are now ready to create the final implementation of the one-parameter model. The code is quite simple and looks like a standard scikit-learn ML model:
  • model.fit runs the encoder. It also scales and reshapes the data.
  • model.predict runs the decoder. It also reverses the data scaling and reshaping.
  • model.verify checks that the outputted predictions are within the theoretical error bounds we derived.
class OneParameterModel:
    def __init__(self, precision:int=8, n_workers:int=8):
        self.precision = precision # number of bits per sample
        self.n_workers = n_workers
        self.scaler = MinMaxScaler()

    def fit(self, X:np.ndarray, y:np.ndarray|None=None):
        # if the dataset is unsupervised, treat X like the y
        if y is None: y = X

        # store shape/size of a single label y
        self.y_shape = y.shape[1:] # pylint: disable=attribute-defined-outside-init
        self.y_size = np.array(self.y_shape, dtype=int).prod().item() # pylint: disable=attribute-defined-outside-init

        # scale labels to be in [0, 1]
        y_scaled = self.scaler.fit_transform(y.flatten())
        assert 0 <= y_scaled.min() <= y_scaled.max() <= 1, f"y_scaled must be in [0, 1] but got [{y_scaled.min()}, {y_scaled.max()}]"

        # compute alpha with arbitrary floating-point precision
        self.full_precision = y.size * self.precision # pylint: disable=attribute-defined-outside-init
        self.alpha = logistic_encoder(y_scaled, self.precision, self.full_precision) # pylint: disable=attribute-defined-outside-init
        return self

    def predict(self, idxs:np.ndarray, fast:bool=True):
        full_idxs = (np.tile(np.arange(self.y_size), (len(idxs), 1)) + idxs[:, None] * self.y_size).flatten().tolist()

        if not fast:
            decoder = functools.partial(logistic_decoder, self.alpha, self.full_precision, self.precision)
            y_pred = np.array([decoder(idx) for idx in tqdm(full_idxs, desc="Decoding")])
            return self.scaler.inverse_transform(y_pred).reshape((-1, *self.y_shape))

        # choose the fast or slow logistic decoder
        mp.prec = self.full_precision # compute arcsin(sqrt(alpha)) with full precision
        decoder = functools.partial(logistic_decoder_fast, Arcsin(Sqrt(self.alpha)), self.precision)
        with multiprocessing.Pool(self.n_workers) as p:
            y_pred = np.array(list(tqdm(p.imap(decoder, full_idxs), total=len(full_idxs), desc="Decoding"))) # dtype=np.float32?
        return self.scaler.inverse_transform(y_pred).reshape((-1, *self.y_shape))

    def verify(self, y_pred:np.ndarray, y:np.ndarray):
        # check logistic decoder error is within the theoretical bounds
        tolerance = self.scaler.range * (np.pi / 2 ** (self.precision - 1) + self.scaler.epsilon)
        np.testing.assert_allclose(y_pred.squeeze(), y.squeeze(), atol=tolerance, rtol=0)
This is the entire one-parameter model, short and sweet! Since arbitrary precision arithmetic operations are so slow, we implemement three speed ups for the decoder.
  1. ParallelizationThis is our one-parameter model in its full glory! This scalar α α is is 130,044 digits long and all we need to correctly predict the question output of any ARC-AGI-2 public eval set puzzle!: Because each number is decoded independently, we can decode all number in parallel with multiprocessing.Pool. This speeds up the for loop over the indices range(len(y_scaled)).
  2. Precomputation: Calculate arcsin(sqrt(alpha)) once before decoding instead of recomputing it every time we call logistic_decoder. This eliminates repeated expensive trigonometric and square root operations on huge ||(np||)-bit numbers like ||(\alpha||).
  3. Adaptive precision: We currently use all ||(np||) bits of ||(\alpha||) every decoding step, i.e. we set mp.prec = full_precision. However, in the ||(i||)th decoding step, we only need the first ||(p(i+1)+1||) bits of ||(\alpha||). This allows us to work with fewer bits, drastically reducing the computation needed at each step, and makes everything faster.
These speedups are gated behind the fast flag and are turned on by default. On my M1 Macbook, they give a 10x speedup.
How does adaptive precision work? Why can we use ||(p(i+1)+1||) bits instead of ||(np||) bits in the ||(i||)th decoding step? Each sample is encoded in ||(p||) bits, so the ||(i||)th sample occupies bits ||(ip||) through ||(ip + (p-1) = p(i+1) - 1||) of ||(\alpha||). The parts of ||(\alpha||) beyond ||(\alpha||) beyond ||(p(i+1) - 1||) bits are irrelevant in iteration ||(i||). By setting mpmath's precision to exactly ||(p(i+1) - 1||) bits in iteration ||(i||), we perform computation on fewer bits, increasing the precision gradually: ||(p||) bits in iteration ||(0||), ||(2p||) bits in iteration ||(1||), and so on, up to ||(np||) bits in the final iteration. This reduces the total arithmetic cost from ||(n \cdot (np)||) bit-operations to ||[ p(1+2+...+n) = \frac{n(n+1)}{2} p, ||]which is roughly 2x fewer arithmetic operations. Theoretically this is a constant factor improvement. However, in practice this yields a dramatic speedup in mpmath. A key important caveat is that this optimization only works in dyadic space where the bit structure is explicit. In logistic space, the bit positions are scrambled, making reduced precision unusable. For this reason, we apply reduced precision only after ||(\phi^{-1}||) transforms the value into dyadic space. Shout out to Claude for helping me to debug this nuanced point! Finally, to improve numerical stability, we set mpmath's precision to ||(p(i+1)+1||) bits -- two bits higher than the normal ||(p(i+1)-1||). These two extra bits are not for extracting additional information from ||(\alpha||). Instead, they act as a numerical buffer that helps preserves the accuracy of mpmath’s arithmetic. Empirically, we need this otherwise mpmath does not work properly. I'm not sure why...
Now let's try out the one-parameter model and encode the entire ARC-AGI-2 public eval set (120 puzlzes) into ||(\alpha||) using precision ||(p=6||).
This is our one-parameter model in its full glory! This scalar ||(\alpha||) is is 130,044 digits long and all we need to correctly predict the question output of any ARC-AGI-2 public eval set puzzle!
p=6
len(alpha)=195066 digits
alpha=0.853759937493083281250757190122199336810824413095572304046759323764585125581616410488240763607194718516917839350363954485443935095843447534215630395140798871446663932215585530323727056556777465363107411113093219028463905407161528037838028976493513184498407918651949143914229745889482185873402616513189357120863286458177930010798837768307404260765389452275734113093301901714507207053272851118353432673779122972109033158442622228095269533057495714806801970870505619779649723855325402068621494555500676139408707603179899468723072454846998898730222888620742944800211241748827413022792467900683595098294306351327018548366952602174192958975177746196581622671400050086444197702483509225063852571081523879527241122867886527872685915744001267798884362060268016184127107174763752218145506466773720207988684887233165536272891894320312927756711768624437455799737598158224928805892840337485456184892091808360022107394803481365227963790789468734826603758351475437528570285382815201019786393757019021722096978466294967500904210653021189160930891728427150461830178514724573007920509988587914100011283029096663690349282422325380597145696430026379978184473514233952540802093891074592468105841224028900881147184400319901913018311284298282184314461040738045140212034863824753656436361823773723602067637055566794764119633663072501247309377606005410829821737713604299352747115672952170473406517930136566100586607885566986160472436749996915619136977338059151614561680323922298120726158615883816755310300340655734524514164554323963293884265440753406081809427792281286686028973782728094209467790351793622267952199465441683854118625680972182539023502631720002551485278494431413217068383198498784886075478120967102816080489447623626438515050852067119423434742547143811107577864643632342410728910040533612382028203616319939506816506806901318672615356879364725872638064049175899868553314564116341269075385835398969628113608335333972337126322142292488403127016965538190560862048170587376471533919129714648466738732894381394054256511316743196420664719403149631855422061006797733408270209471064135229921089864160632482223879071334757497403968085020176439325551722289662387957261567960284272315871361297176747201046054104685819723833374152050474357597787746626089130971203245348996830533520942134852793571913382248192855536649741284819951654887904295172476246067047631901036536941139391884271506924951684102494151904772577498228836932435870107024995105120301677747939501572929169388626330441621978897848628126134295012151892957300283102026340406743544637312137765798551900529016665803231176208307483263694554572340249216438600783504544237497867795063203235034161076187476539277429257995744209123868007661503258755996600608186667739300244458096309858381734830199348376181713457404755108405053654106578040154757737122740595749831294477307603592027277617014014415710204970112549779410946122342985604233639099633544144774649906961584810922205845903682410829069615257617760745471721182068351106946344352274062225129698601934415925440679975783006488007247614373256932608572637937154544114484504346792451763102267084794759796511435527831421819693310043173679932224136041017076236160156545244042788827259829205419578732390121166195135201811569412142121352092053978562630038090826525427344515495770680867908703510753486298514058233406667184571586758168348924940572065971547956012013067548202172919117466110860489250598681909373249772575559907611482400215507091479315646826535434091117022815119530296330090391483874129583289058877069877693030288465915092051828419393368236916395875437319451725956533652925847318815536072678912878185646604311283420105056079878071569832082455217601830125516722765841598111864343160966930895670715398271101550488127221042867253303242977696471345759315767240287208328296649311797730197184665207752374636937173058606762781492030383192769299238070714378685976594708967968159997342511700055500168179487054370578560907628949867663340616997634458970361169352942459730763128954390678326933012520905596404579569745289769322149068538657755107127858209964361194414908053959045270787330295885536743592378720976325799773393329505066743321175294058235565639158668703942740873750189860976902732023407145569721280423699282104641149362194380653857910600967794045942897826458660274750695638155418091655893314293837155669042349757820588754377569736080008299938237175973323492652842282500611846522060728468132689797124109717715630841381954182268550703210289735438149115927821124337010253020328335756334474953285893694988044013144645701127112251034373410617538173244790642537356264473229164586940805443373435487653931196788930362471551373345345150846610619029737127132548133666131269819987432703519981006567173530682234620003057174742078068464508759463023353517900819577450351332275833279268229012760599718823635274067498938709917257422588642841417290768904734895777507860472788522488207986354829785611502537680151476177919212431981635901964865028575058001924942618180435918523940687076220333646172385690783883308817334993823947245219952270365261976583007484944359266416656747551474761109894563269308041792740601152615464465669499242333605151316886591638552585082831317306921487590128139335405353957564216488720822634084261156841970762244205438065681369110372897092570888844715954896154359922638973407227966586201977955676770004437518665822815006054973848492692215490263391502481727115279192400050806789666949457450727395396454413049642918975050903195455389966882042923834835788234192644843378603958745396035352338774165504694636489201576505809727427385329541085234882091835290219055538418180540623720430512366515421976506019071411294516432659442264264487767447434744677900395243280345899522155815964873553923966170488807184494912199795598407836544407522516245417872369014352899801129407351188298512146175294431182220121064986334591886288701264145995564723381696733347377519066592209995147583859977234978377303833751071869487057615084518428636919798197027310063155637981377433986054271380524897583550035202010928361627277962023679381513628378862648838425222604655141174505893358012161530207983344992321012403825667186219888650202430656146084928029100811410884460387091421900123809090060243451767468050777924793161201558346308555478616561543486300191643808742886029553873024622967160850110342299585110383988966792698283931230821149809149900398898802916607203771427900132242704608107154392316497692075735714059238858370256051880830393188930981870982773459663223493763287283686263548577090846526331787424048877014000869825354697462759872277529124429685190444352242250672711730469255314737936495873066820038966182275476115969056812373637170938072715883390125268783933224875900395227624972430734181842242642223187596604050519670034015997846215357955985705340374495916489570446093999224288754780194643823673835723079292637648313706247726161433029424708786303595939545521877599070166265724077182581732554835181817792229818716499180230945734667527460247847081239174606100734745757955103152569303639139600518436161972343202568973286468735572496197850866255777859724508571756478221500368890050566614949220246465505224012114136609359295407931377228233984083595945400433108126562409866808996667212168711774233419699136153285296481320559497910944768725554948645217732193762877476373718622684446982698119433755323114161247102891644495470195183726547303017413747075184560234313337077448100352277985241145530470341503783817360864786316492625219523235067771354648595240993216604202023619185229417421229349111140615854755510621701183152473875447562662727868222569949434553032917145540729176861763235939292522236339871190809379831349881197288731533474477302453615972948948567092159914460160647959738820118908608391054924228771572591524778221708761667249294284476206724485511447080823422360245043666774587825391407376581565005533049511492301942647837741384044684592548651484381053333485072358724702363530571947423791693476530659161970109350012813411667377657138173514967642642230543188233629929067246878047588574886459060790443921755496022595432800827596383229469820869439247287075234610965201235154877141920047445810382219826572986315739388872902192379942788542191016538865651461603201677948461496656925588744487356739414098116210455023929970826462853236196449210796262177818785173129242767102206207987967754423125147483021697405401568246868577218660680044177735357888903422071421759740590117080286501130499103436260419563189603584066135316144362490770281757553784460189371053326043690699441311813319024991930060444522725482404405790610540582143828502752036572857023890581278020070302543297919207214220377014703146177779465821686759554487381879233178127904000401264412798461685595588086251269262972069911134939672927130223123658053290246480016326799820499946742646877056922626816972298333748397186794479165507463255124444905108795086081073842127545538007239588654206266414802630061043309263177142229530359983567274053830059068279033792406373112318160275016602176340828016177068905603326502338508110036369954878765916621092593943788012310513203081097717850354792971546589577108770983170916696509370906015841390193168264748735728377295344248413938985236343657738548670151212538733799004403969829009654220349132243667443198995212231142318000365779161366410730704932360753876301197648527212112225827441517672139710308731226401868750248485276056490926987684112501285764401407816053354231106106293881972597124063895249739821616825471386706863649388541133416027323191393262756660508678005886978205077948704723067020297665175721487099749939096799764709939309041522540561059832676827538131218627802233294415478414496719619876804551727345576973784810789314849239318473604474025595158442966408811795603695635867583811290846936566430937729072522480527464301253219230120321489084165589612214642056826411551251144387533508384458663803483548239597073782327153140920923925470341722684317057899395780048250241504993687058621978469370739854318940038699743773645156133683257542780438901859068108194231004096388931184736574612638761094464792866449156626834794308907938380621516660718278326249875431283499363653513962969851656290451163853900537090172686974767150881272180343301726419199592011236514305961062953766086014286363285208779842314239866114840243052119235208900887277554030875366424524563098595267228613145793035201906311020697911838269458047836108541307318622051161371179063607467757149391613268875404924820746815563373962638855740015672777171956151833358861092232580918001530262430042407926906566222319945773202634630083539363629999445436190982508265169360404372401287231957540069285894669756106474687965347073896610709524037844875124122522477458588679669789586417673465869713683465140932778312347987512898307893876903900902499518119469045727419202476699515515987196224967034457537326581057137068373530439746218546341160104313167676093745574380579744752902341885448876190995790288434069150350797766350025842311216257631267381504644555931848912568865101560098146436347189379902539905409448443659176191721103726143368865854939934014723534668340037604743591352744188101740348173480169678813829473777777496307980769618884838343638818970958147616316420276221747630493053950458837784077172394428288475749854628326137174833894627039274104377464479628913950540516342103118280121025258686229767203152275116268223934350351268773276784556874151779854377999797006379705436378793280498441399469419378930900856783225199233444822470877643345589483510838078504825075006666246571534530817985256896485555190896644805585167546819762659261224489475359947859131794423545340164496671175164916465799438753689403026278170054718564223111255949353596364933390524351309580700814411686320863914304557043526115248877468658657355485189720915479159550900285411551221018966411307449898843588749458804897824210829790913872782282554081456451832035352891673417403890484905300036145376606038325859856337657650302600930070084344757736961347914508877874994447157494920809716242536506191861277690921182724601047501092718848559320320058033382341537102559185580809598741695716031598341382192110372973826503222960180246259826895318542036448781069964240827118072225138316423309545897145324474345519141590826548174223079377548140367139301306386438516528521209320382264326474390062844672857693049026425245068829668610444384309315579674847151441493962692585116742850181953614574726318434679272187316893453376159498235966074229037580002936816799125875562072101225731921099148257474388297967380258807786893419591204081799516509825643364445830325217672702626144790200735349250203574757570680593494813195850564563133260618281546303834103161643164357258790741105233251044633885808608293619423596700138459183994981815764018737419600409243058513585357445113881076464440816414175768282482015005755737143848631886862512898532363091899050197808524949629675815327828951170315935857891583705059139138284471722656297771010191663819097720021547507161765150924278035367190000139358758689816861036333752934930623672880681748008571059336813289066504069217949160512281388871380605745348787836546354158664447533402333507449960906651681876723189456807750215190983504193814330071381979318698358138021284530992138563506801290039081078892777096503646801379171827499591832119895165190850051089232847438647624378182916677454660244247401483680445980274230413310833907587067461261679945992181508459512644342685794117258856690430668865784512039887054261541791433852976014448180836864220506643971205691951734561244678370558139412255689045674819738471354585120782423289582058038124723312724091606096865772946252705555653472787915984520786423005803624224921011072395240492184026557409822685886170853363365107753123918927790448270987081563635920639722644278298067263640419531059288516580137502808785452504323718778976643418657032873668534718736257337997450641964500742489630209557371761235763454281609153843398374792957725813968685930507341708891811071276715140474402396021355266242112538972894248001682591752628748508812226036164471313321154565152965648691726726000009680084866197347537465725769587298041042689701955219465678615561946250242263745219354921280987370617233423049584247040620893236533079397765765438182531393999617052723924263579393414312780438770558269843595542776844842107397399862035049227921392976800178955559614215831655195254786464600439208973033705429118005002589744946233546243266543200449556858317641112020954704485426237998311625845121539822410443281684956591259380701363649740436620630451273288735712853839490724828045013799009948523430019784285217153634388798043850682972536658244976454265234007010159271465137223747108699325272797113797467140564122857063180667450538525707408192505003938903973496117869716702324552724159911607245396638766350459024586647308420098842788503536679141391287382295277277857778438690405354662026208227534324454071786992932041931521779835733001975062267779188481384752931707716593246367979238987169490556422023884594469013787542526694272220822808025995248870341433370392308322623847464515875102735916022263230830587844317086777447477576855756202555808122843427809007188426754267689084508809503033163996086716733948539154496874782058924093009210085373497599863663687529906633270394430384947321180388400837771735795271241927371909735843099296917011133491335102091453154884191621561608298125072427157858879684298793214779193084284071702211915224281411129576363673302505661999109081544162415079425932262457363648676712619973795251208200519089423643477602860946620729185936197382910874642505749940296029477611303188037263325412285138979171792364797541018627027426127963977104007705767701243068377367958074058451523185198192433473084520764842156984312748446538319118142511473864643654727970193958829639744689780176713365042617699233149228228785174487068076892960801145326942371866222435184867668060796939405937127875396268648209758384684884231945516219748475788427421977589663940685148706356622096968008036328577359058816915741253181409363880003422864286094939705912601191094388985310876069758089580560046615713101199139514585941295455967604800980746366107448375527006146702059952425891464487235866485791607688066288379295015389949933954625610810164602199577730599764513081514893486080708383192411849439147199202282610974688102014594827212457046043174446189231507225224728646012314669688870026601413119474122290901313664710308566522501758953287617355932741363564553820192495003788222242785206234927862360673541311947026008150013339969982106773465364118657354040728523925150955927519622075354671135549050635610983015658163348370346720543211441338738418930996264053800071056453048336378024708521345961090896729497284975570805453227080754801762591844237145462139291169708343594391570515216703577855694979172806904103825491372230589941538463551936392163741893567341792203282738759914633069886380859913145608906255080093952985472375716219923386537579258698864800129707969271306683954225797850808358851505356021710611802865999625662237616636160269134597969464767292100457553491141696587014621081743086762849568175505809405611696672220092467621075086353608716396125391624279929575945590251274163119056186963589042413962572829613152832489078590022100022484878056489705174125397432042174914095520031394682521730468402930064547636740945539812026382597376349755939065641701431325597921163035327162066558249836165661020620455779755781878335710760478241883394394050533670112231865518568283080759362638442089364787795103199629300434164600875587533439936383597294292717387890792261760489738818167797440935690084602180335009972670783756324594867496648587515532014282294754930198396308002318189328627996417380629602749444530795916512574773511489428817950635382747364890946062834134540442742989988212756243726992907621978437072112638491984506145691584972783819861449232149156941368140011017753489591966982739852653431938501443638619103690828107979985020359331717766382258101702428822734221705830907463064659494025396819788433691986265788532218899896955552579766447768236899421865327218681548684372596584863969326698410245472597313706656878777203643938273239095201838633270725194397124350746510900863465480838693295451860896303867923318615612735468889206148712657431861221293846573373665656649589223571204098117898224507998960018438472553204423326881797616364264897601678389969381807064300491356685838842150348952495761729716484741082270369347165870811519693003918475434449454091550886690646961536340960257131311155469622085496433817591997214309934299242837833967686389277055157355097218281021159198390533833809546550283517436660405937186521044970922815274115131529967935021935297685369806661872340839035277610831053437938151676641708056510727386286355338140255196638588798019371930261199754894220670065996609506476146200462490213016125398710305862926098479612501695082793253698664450299538861193838906802540530759674192166075294520820561259221858351268499803849451488886785885879620003905020731331540543964536524326060287177765106801973892347480454522416940451219753665072498074970687586100604088504863276600205369411527372466715031124067032311906496738372697191795142205102235335995568338980728822185020417677883548321491412568107231580475935457498687284773100540772133310509594697114155848966123663063528185847040499722722424462222732573496768299201026859957319980405467502532793814976541121729639060284181476074171906880011158225378585176980297913152142133423003963433667462684163060279464273125849981399854502137622006229961285752809282491596199332905435284999478823362323491646447194676075804622295139541033892598189363058279853234578779654102774397926738252111752486943524607883855647301254018231850190189478471097215229310992760277703695120416533838062862467234733060741722014890585868248975440854094494492933474432092995172068813134267554386371325084197619250760290812130471001943484361391771352077526818516965784484697092548362055768189625485349565303030182802734039504895158151539199273660992763787817215629839459014099507571101202364355392060923560803303788079263585503975180057532179949255083315711818187109530075955532020369039236847957208724908577055103390107559867891405370716627998961027665363165592866602849001301886449742566164445213949358792367382724803484537098038117860813639059389148508973616537094898856889959770510419387945071556540802639707401685568352799786756067092159403329706854260245856967015353360942797734496285475226165668924662239749205478815678912477555631401337914579295864787773515275211924266161508838924342835738702832298063640093058539130658089987687544028208253426186265220230332383785345158450957447999651567827890966773660349623273799856063764521804285889927778912235455859393943149360841466945966533961744112476983405803689815635929311140030592810681306727895812203906364344533536852351183654805565536901900969634701578817881779779791555018130481244697735892010677409224745829831363183274478714826685677115021677157711881442554341949043897687176591052756113145060728500477266490215942491023501613026932250739411831989716782634222183730426510234929236600246634114343164031958974341366017411248642767313582054394557400847352237680813467150577659930029802076282630636729639383013860625373013032660378313997095827703550285809565288421131735784394346354394025496675729805510580908760740726275103594504025480718424477513407391770493653768419569306720567479244443762190739509263232687225095448980222023462369557537565444097366629931738369420014140792344956214125599489604977623808357106773287972667809453210854141190338464626790670578187723376868649314198146992066576352555390168842977216610899652334070308182782317343663500722656732279864273926535398564871940338087180860382235034852035461691944098769369403991735946381006048678716366491514938162982840675958547163136167889269625734130912406504123024164862068091285786029675182295410808534971556751296367847059602806178167975174140308235391458450977181018511447506944363479395426213420411060301495029963084687363491257321878464107016402285413961836652341125027543544523583850078574437893865882872216535904757002233917988225062855861586592974783821966307273941039578530020009902061699263570777869509501355696459574022564396823253920401121642163401415814751334651545748925179427484605375034971790846955970796666171763657898981304942462025295060490095543382388081521595840118322077177596075734531911537636900947676339208384801990028645337322371833396870449258621669084297944381791739792667835994354933786035902950055040024904882253572678471547771052361225876035552979907341840991541106236915675917206906537852371275921338814220204245309779091048133647099199176491480948487777473105571028710644985978647792864575643150524146138133665359547945193704121501006719338554936120964933514428639566821139789614814366894721122784403606860068419989816193670359892973308589264307921371418631102461567502930423808321498018608561383916368805040446868968823505381173956176616440420555190244759741954613519095173741350277399268840649515837211285362410361813051749938349000050883097476817848688466297566669371077961244498099773930562622793833915139118871167672349378508601400559873997075250256071126523024505191357330999586895265296243734019118519169468567583424398801554986530260955533175050775732183113824328216804812806119724743640523455891347722670170251096832788501330055240008305387372674626176100485243344655649388211489694763962676694961415200536042830616335066665272329858200065446209969444799044146974666279188829544318361433006634681578577562586599796647840653731478906004968669993606623266168171433697678471690323105048758710464786064885420517914048626945274163193596065746402962939823105075513938570352074495153066251387729107097442581959194537495657496332168102765907336417494607370573854509768443746076754280884989388850848684034178174382954587896110248017155169281663592731538783174509069630942371251240733525079948997299420356974774629685624363396538473350090127141705905361554523661620246644853482112880175551497607307198225346891821578606809886200071287438745304185578571615906405088317137559545148298066930749688072198579636524892913894197716157218318407149426898859881653934520294311440890891482445509736419726736862783460452071658322301837214939837469731821250853320473902113825596741279907382493264727104940436972158100125210952342178388716196680840904132396634043240060113005351782699273985558831433944097934556234330206705945572355945585731572663016582010499876666809376725457824316803413521640673935829072469941883815103393464367130914685452239012565960056810697775098859601636539336337387386230548572437496953069359481862268186134350747820222195368656340081359635468410769788105405867350050266632759672609622252328916395238592310802616941802157341606353230004228021753166988019079693409606146577674461026681689488760394678070772861126611102489857395150685911031370268657657137779014834907584115474590420709319735100556934677150242952885157230744743505325174006084219639864203526413871044728589587133346864819384862874278162276231156710279790319944731631277253170922527074325919254807836344583758706872862929612995591209428757810376217762387817237785142179634444357259528310336348858724580174924809777284009834873852636650483174891568710515368235623772129266542721422276713415421928407377597586111468583937061904744402065642407126057758144472018501444678898834109177617129885379348728004382591384044502687917226056352396518689886931531597670401876534203606434614001934560881209894733791370169523134181942199468709588222540080012324558084544741952021538358668388295759571193130582172725705879696063919167740015083647554995918294691451882317092062936968787977346969239312727227012654885256514527025436847169728307552914916388940399745904215354926914617574924692896152734893730524814685212438526776506101536431094658042511854044582377258962639963216540391282615501668285063587954567816477126236787860766795108560429550420478316767114638552318844167346212008979913515080914521013910547223596092246520886558812029466437602025351382798168652120791927510046036224515732049953624704213496875487402757997425588412835055807116877824563497669465608474732990791638089982490391219762626599515495540721097583230273074776294675036022679186225023465942801394779878297673662657276070717405690167606937205494849857720726358795376150852547543575685197417570802356857736669265058630213185261811828579632525247827449632504597260619108655966304269239542854364820649786703976350230918580319807093182283705454377094279311156931819491184674426095327046799091376518866647068286974073849504761035018425556009146743944298932352442822766882810700635892408302049733976391730161218130916489312688116846774470161581025699491707760407441049576529929081607221042100477741027072752593969213256996771445854244439777260526370945381695732756188188323643899613232777164736036895625478197738652875677307804506553732479327317515317208061119762535110304339450846719031188175645190804544506282839858891732987226560488004937826713140210532614798768114136096972638406186125913188276418982680732481507914099757409551306330649435894207985276332055410810031507829546728381118396620138967343901882049572303826643255066294959017921871188394834206846445076348817569315740881155589206523299635997036446406082855217933634367783323498637342999342322663586486712520223275282528077806361524159391139592433276173931222083359978404811513520226507293125665041103316166491954716047955424514040841498011902022456517331070389627119818896698062329526675614311019444479254282376111760445740007730304948189123843329390667269142776360590637478290350369518488322229000867294093816630839777221060430195444446506178799897454756816548516837180133627916693189670903953966225971866942538094013844616673247765259410427271967849600030282294682636806045927451461078003431512281443751338365049395022333101149776377126986613366632847868168487192157379732723716619870981299737899460047842959453110054396505345530586535743475812239878966437934149907152869211471249657894266288721002640222537619030848067102673875076158159366914327487798442163340777744262163243552142976717424951382372799902044574165697973016724027948023164839062108284064933359338582188625026005057395307234336341799944543630858089745188521984832904567136511372847649036312274276519367267119938757913068285062448894358594630765773368189414724220482566025637039232877112711172029603968117393787308117874767217257833959416308716181761504689317016031578174150510658759264643517057277420255136838913753657763766853839033653462673584977475442796413610482077979717057165156595801284149450334618683792459299336093372403020711696776877940014235629439136534631568569348620246238316966669889035510859931000326068571454145009707934097568747551039993912575447662180261137655993195681875290769373938804388851890107414200111772266619973800827051920748940725393973074298299201401379266480985229286227950954831689644130573971712742344021330168179104799421853690610867962943089813999818028399036029938339111333481220816027473994478982832878464713131190104168604459876569935722843749396998886254179783167503367643435274696073547460056719509633226152915355172701752627119192719295531556276678574091371567405359747795808424102705782631349164247643158635146377232034841523622999010118349494709622100645094550108472961743523769788415288317384768118611973107053425288838307105945004257612282582263962210064203497212545487719751923904246408630267692279325049447008735305496156808652916734066946433924660265212835837767009059749857864358910999160492637122439612950481189247307737950271318788539478303819461851715988375891712905663527663422545136439912229191580992696835237323055393961246114574730211681738069063954175969582979635777517808426426218357943313043866471252055754378573037780059570446805707094809507104338681696623739541381832721975118482329210730534829855944090398824525344356541151244489237608747895174449936208133076721659928245679171419253962984681129197691790629199456213835869832235421592676940028729054651214104384705796408416742956337981769697848449195384673537458914075027602905944231652671705520001974946931996809827554572278403921785575442745271468936595545998398052125032531533014419049689053108086621775909068666953850235418996827266543020771147149646109945252845224098318152803242314531631405870391066390510183739818023939387369043826025705313634646775388492823723888629359008985242911350586066286188809912747164034754115097033603999245965023926393660216319026032401291287523789909921479225919577256113143765979805952327308224304177536114116413349538615237598741518895895105256039825891553902004484693018967752492659411533237767737343943230632545314245828120729158074175013778289947373256147176894006028389867406143377893341129780856462154213456054315291218467995063832929515823649134494817608405083313027836506840136685220179615902376125623547232406190318616558709168066367369797891096290315065788784950043866109346982829995575088148174438019848430270797571801683006350185207556606996757470383662151562730454004534788840487572524802665049315500815640414450671629600243111587096121618081671851188245849941628800564885064938371732551872301973555361425684327439018334028750385872115131693002998919762003829138993907811925939178336905865550548286636499852885682379715439263155667752383460287825262492615586977664904254502644680060758989519441562980357414533294161068988524944320412690225418379109213306673678957255148941416226145314526326752109598487396154154035598070054157519894949768498911307726889565734109864187987079563537529998790274917598875649486136041031927487058339643081519823794464303655492922894707690837391926908967736776003301316423156989875236471478905447650074478177701132374641480691720497845841595259713069140655853971436192927501210203257188925113361523776281813971787463990770268216879082046259874763206074629544300079587693317278086291290377924518384084936039710099543707326281296605220505782934608054643441511579243953525679934385889776735080030500457184491758913543594852704762529362870106579704674562134685765010172387610610011104320134688476538239417341448290635937427406191502733862154359519708409536789959399706166664204977255266015537129930262290806114563235658238144695104395959432803461863982568140309018276115717783166249451806610574475734435953742570186542358712960883618465007524901686799312183686465626911284690874083544584845986534459836034286111556278433962742926843393319776024779205436454967591364727145060875818089703178339829911597673601848095726347189523575584728385015490894935512831067576839541768846808677847198965141800368594855206369757988528529406463270389618475519176501425622208589017218306017068954944563168805812614482085636663149436488815968912606978884253187953383342520418512415397610298926840719547841067501568463697800889162494867356569611375854940681249999974322396825463823743644156211909106642543040611763983862251006756031517479638818608841575187198152394188933727877558514108374509652819233111623833686384833710022386247442752361005239536988656820269628826118296349718331567127228627603773422917796452527768692920584689448406784715530043597163906503746909363581839079269584835402173697513835347119998605707156842011868872298644483331160998390930934193071690632334131831670271311932957513641972119526749973284317825354062963872802621135815539157180877660107278985618701419865959436875195196359832050551785483304980531758344960336587576387716705383281204898658608265365617515611676783026853808681590776656817099078784400163345932094422977483401446801087501403608275542804059372296707910559775888114675031002186450782824473208115506480179958148224495763368392583336045822555414649765724126300717758894463545434822992291799432796654799512222343651113018774096061154975037235761829731776289221678734957025888346346103783057444271469473057396644356966486376880675801862353673920127566775070970780949201746866800032672333878540964992472459245731060709197966152214903149553402636167874316010424376280567284410239578033381931634766598394123210918063112737641649115290713416557893985542578299577229842348704620260793103381009331471421658351546867322345427744672816004490231395048608786192369625676694868650914477466070019617285422474105119621328496822283302692119731436624276033716434026141277009050988324789432542981345222289218178530942277669608715118349772158326418356194784602422251833445061943757424235448696620489921978925858609048001035708435795663390333909451483289879418781987055333180100235732199157322668079627662907665288805732788185088026895746499503206997414615870174120660734603049638399313840345330182951418423877654181081714448288910427701147350130793405164871589468606772596997481875500870342400014290744086269582858211259381977460893821361993154718452306920793534051726227903067976535761145837569193232728087576865578089727969852695902183594027649172325936076845855644487466236862127840237918846839501386543897175025123955821744219975679095555721366692603767653305165456615910734151094951533449396464547788233043867116464326120370539992034091867667308318674192104204053932775972299617759900627779335229522033606867046299480530419788733103456380702250961936742916588966011460694142489858221547483981760653122659232158613885592592825326332366079545413000093099413540132528864880426230714325902623502720429849805670204379881395303273154374929352779196693073679985806180406074179592942752768224808338251995116480714930394308672844231086877612915707208291869040596137492221623929570971625349495291118576922292942327748377824150072695053704639185635639299461353119577298973034979106658681169382084231249266115775539007494298695934832623315678536636594881254336533222428313781000196191189239420058895202032378903525535010659369914044504629666589040978510582403350121246312157105180404567584870949130246294323354013524860855926800664053942487967047783882364057464197094089907045678707917898324350783727178878393220369216623644448357758172992185222886125939211936293113132122455909436276065767598247610277964922148474548375818599718757067444248532364974867097370600546450474794444115558543082807473433298521365955539855027076529888926834053191708975381333854354834422683332510207574496071814507394701099107613650345110286062976660960064410254603242937639810336116994178376391961506569470858162110452977415809585826787140517101797537788892448328480899112472671468451835636614129266451381187146584116008602678678533241456601101604909671357228097285374779148537793770289218661244126267076749890603942933524126177600353198858468668246385619003318631744455706960513478286759233101946639953028146473614470595369352344100924350118990280543260023660935477585549832261925686951257829999186585267858393514600155680391357744865363471707874762010455604198363925391772490516351641168563293911792263578856534680010410809798543423352688296716041262297562054527501823655663742643673972961626423638592005772173922013836977661170548667370933916287975384682708420036553340199950866849785544199141652066990210163817938884999801374958194672280538814904624260221223191048600382011568210510608234520063386509076054172407313056407515150456256300237675907217172683517262972522635610687379473928904646045906209105849291143267942038648454983481666843644063291553545066146473275759243880769147567142384870168794322406524124453647530277963214658082705669807556550987148352772199393762181871768505268207678617786057260626422057411166176746694898203561743566884436529663208110544670165881094081829457689335257971172101338401685074572917956587822980738911784894417117672812102251652724627074830222807154873139064928230707055262865811456517606382150300530947237769898108924113820633085795306376075644526072252947862462844797788946410915910447713883608250080051932954247483885949917089886426910257115925857445739552582542259343721291899158454635263351427622308734414191144074000181716267508432028782682330724921675401716908766501935009027991186865186777331410065156025030836547518167843478668859813198385846169045585974594279647624432726862845475732776633181790341532144814174998116491143573981598569960851210932119189191158701831847788269797503722132917833083940975901896964694432639272226015686255161281231739819411024263151765038480104454023863733032693178299264337908308402053649770573191952313875681208534251839322873284694804138269634933693847097759718518290489647705382230500902203394854594907611440281700785251276875262394428436697054033987967694146087441564371399658075612280819889343042077813346556935769350938551046691826262650674124885857611953257014094091986790936967729943679425469642772284106627719730963963479875206296423699546385000372807682109105776497088772219764892558724331791333344260536148165240391194522114539623976286444119790947372841760656847090216232913943432913979024251603487543040070534085613915002104536131514342201240408538664805700817270019040896436128289546423343261377898251067019918245563491491485304512821604207747062401714971908776181522550129707791076843160043879177238878415000453471496743127186344784068875407110193114558692457649171414296050130652342614741458665908999445194745707864385034085962476474835015101021490661230294716306029307863985374070012179585021322674281046862727747108530408423666812813528249970674644949239495236022320509211186058186551081753429423833750029483491542818643620869359766395151947172263408443609599607504184123369298804322550333001402920378422047426384119216296584107920811314835225174542551161688030840063530068559030080621964466145365862289860960766236798412666891643368118130701700953396063357203265915028662877983220698441775593004260058502796198380099485025700742866837373402875977273956682899864738981115054774505064317301873191217760680478805597679541597036204865143193403843305796305536981333281881477475088976647019871685067653274593051704947692440674486357630308299731092939316982320847663681966395619251722525725203585627230016358708406431178073156475378256647061617416479477754904109549032665382138796889692705330058178188483095789453029549602729747663515112707589140680958037181825231833566310536703812226678466153095419748040982562839483189456272782792472266896658203600182164886385273918760394041145059021757201078664880669954904117730073402445125791128928354075720428698126758324301870493618880924913330974027135066340359945992430490200145985184866535162539571071374240389870602705145806622700699388143094670872255508343536844379734738338482143604749587166882107238772268570791051592916151819073250632956521541403428136346526224482875424439429603936165608277817991740204157691655546584364604385023374122140289206738395827450268245306897329619035850330388617988350086065844835508655894999705593844879343374899829244833534955157325816800713166823790953032141846747316136918580786032546194233076824053826466843101145139595038681266545361870432728200763000441128364835839219786091357586803871312577767778227919720289747415899840648209816783498918655105450093604064963482897058985559745511327813856493304217860845944448215864848240485847549018069558768934044548003686198540904010403242221546312257501314918777198048798898887372743745253480373111725915320797914562486279689041793611164535798798288883276822227063220863725228719062617294635977847088516112509749697149689170889888215790235540606362552204347057206576172092966804752354569878849261620008651462295351066448186573308291188479714566313856112975582935425137125582514156875903565607233475431034041574726112831720429701646968307056870017554515756761798634308657343112215776539278498025548098354752055276763991869474070104688189904972048790716219364179493339463732100804354347521924126185719148786905658739955150833306226747994194175266399098353951175999718417078335233439477730746136924865766937068451239397673194182474906844772818765248820630585517462901438725827365974058313880872413470577555212525621789180902542783433074223271050339682050997165107594557180494500840093017005549521972090915155234933355095796182666595433023790146354877185167053111128918780619640270378954554358730681653663358606765666111603028229642482343912632842360529509137271378103006655958964387395716185245682969939083429098821126338749436602555893834193937081637617734612096353786307041987334975829299498915214825826905619419778606464755376680172963474908655003817219636880892614247433010108857240496694938190655611148159600770693430291435912470928129467978966592209032709775344050742793862035137771942461861299910988294923407017783504772023191097586629046354056863196555957337765727847195689065590908248005352919666308872063744926727075711332085739854268762013947344499682886116520668748673317862480569376779362557280476425461335091212516187515045052635890042101839355025010770775184305456676560476491660338751792798366703661839143217648655777012070986247462577751618768612763466379505624261602824030890974071357979770281253333754956321536959641824932548469839516028263607570687868284213575078148793029952804621334439765697353261617779802924440393072230931689676342886748945184914502180968325795587205830755763206702378894192525099099952197500487753388105757925715653152602995620101777203049528044952129611445441390463523657182722550055231246327954599765429183635034747959376342181408265600683989943291984444462524003502689855146235222565271764589278524250634341753688413591963159919126243698693473874345379083209321521586674591941353837928506616628210456525956819253431516597124571101324271676503111180563538009616682394852935656533110855796904123031714411409503601404288940192456705075312070149634497368055769449394265123566262924680320525931053467537969448980755393499968014481787477843934289225528847735573044207187890204540613827409133840663692672634066142113211124844534235217816750708317404405966337702713483886874141062208583768482818322052299938635479225096424555557493067309335637264723791291101670229064323144547438256371975308014601513207990659794767175664798166977764978332150621023090574020572552768767776831177448644345874328480973269365586679098197293818140805070286058684359268931765903468207483912177549333826983397731881226306319083748377010132978830688893967613380493471331376669660661236683726608914213586541642076892803941739231278121975360846203083538800761854531011421876113751527697588888696677704952446436192545706918538559338174356449766943408607089799510821410922561650264189915755359265329678121729538498854606305985210905528514308110361550308062308893289060260593231789999028785558045216008665604618705029892778337567596590206559597961346078744274504264816649214837153614049504964677567930037444548182583400734388434766851929115744131207641229765263320892871502940545745918159010723072464875793999228588887247121446962053845600518709789187943241398110236030434681899176086593775861675858090230029943511504678099242338719107092676493548343927228785702738016916533921814316550783663227443177438409149785394445761299887327756477291970590760472203153071131156594846384443881905615847638336059513486685110010833266373627775032503160342914474117788284285558747517833050853201950825783344518675749489844890396654538087535111373789053047702061726935638541169670890310917856572055130809499974603161541707118515952400090566897251922343229261852785294032243001336950977007817334802941537863015370362979761291747404453848617360765913890993830111286239546158531107477875922660095559998439031555365394809200924547237623663493508731342495024096406568617236197070499803171059576115822793781223727745240136410088720691004348511495125620550345655524235092139124046216701943187785882279927224576676605166372711024261694402512103810041948010628107699940587225624598915948439817116615622366466010840253619277379755721317830449754959951290784314352698213699865813071749049776502084999659338620481931464324154081279760884024730606066747974473958818371919558721539211782721864488341938242233282181685127741540943551195077234617410773472106852531536997833487382437819268953358684246684034495307165347963124157050474832125460990595892272131467225222766491349689171263563153318438790385480155327392432469597457328127132405815881522995385905871391326456435874817075652691394316590219660252035148700060419951963076392827680067949224045820952677805139409797166652078475692540713515219784394046436244035299955143402048400926275914405972129326170624635562139604481815990480341449256145646633089910950044211338455394070978694070025028735976644103689308167757640358709721655209962814622013472039198484181948581406496206113043334543546673411689308819483903207576934485313744797025687691626803817876770696259067524623654255425572259866573363496075058662515867658661082575440968693008673596570832347422551954856515074675779398894779548920282419711154455825732430535583191082900421791306438278061915640473130939320801964513919199043104779115085862598695243473682613443152383665951622102439251943768921808051362156463730148615184214071291607898697070188422533483612746909845306235373137383953931544026832159806119414763451429909162175686452603983205382142043871488904505313282962839748082515520990902730191743447953325828668538324526531269293086352707911494703608070816234928417129084063077344655005986422617652855001012453816230006777510231162382801997328867122221304773912164238611749441476523914556265836760971100718531214675367697723275224739734718551193184862021865323905490068684844803287464725880996075746460657604136413291922401626707748973459370485638789751462266217764592008336846624581434307364005505313918258358498605854259578083613063205934422179093882940717125438876133856644166806603409615175553093871807423121344213221085448291217704165335457738634193883417319083330528338405644974627269281663682153454370692885106043751432561236876610289991462899872292716016389772218227144273602513590768502176707427515457522825087597543722366643371308046428804095001581617687869427820744088483518208963000662698150474058198576879215067159894739867927589172675225089568753874306455038725209359146485412816319511074363810198641562929227511198485068296857901349366774353288701334376618551244269758434552698698248438575181466043141409790887571609125421262410244924830393580768874869239722050406661898602884876258628057632966889703745184329835452358837269164438644327703020080588214856727923176210313687662029347948305139321331112368870279572448810807411601444750647045142771039431709643605436507132701900483014881061531217253323922410725527427208200124081931204811449570460928158035154889862271648773413679753879741539169160875500417312216875283705105020910720208038911169817982411012955674493395035964826028091161524630649531191620340435983639526229319497287950820279511246258460945541345477187254584351568324826613689421598646909708424801914315534400891690868509174462697008596596394769115559288906154443046819073126031414918581526306065949219115498084204352586036844645310469035852903307246104009814686797395248600090983160821932077440792063549229469224109551228301429284756025405541062506768165100390369921679510878101547789821948070472240765869643195317922864531359535965675623639010320145973566550980327867234478105279271111538830666422824154703402382836176029753623958787324232788586424595801666974626727193994389439827016454331443663318648564692430692010937357971223071302213574139590341653921181646610491545650030801104842915377770359829950076167806776017024863695172767605062653589392150532466107915873982814134160021357577043696965447400516564966854543038586726822613701822315099333325684880103910204800278555972059509619192694134726485745275919194993048947155572848713401057528313804896992611742824523721199092390724608362657644931702244611831412201608110351353280307269210839154539573155830364455333046248920937192006695394851300541203613701353235109258935994579226571185147884310469265202747709068399440628628323219532321289230217992522587783893453875233433041542096932950666977442925143788241704445762965063537666442087078414645439332127434998237713715651502307708770907277015306792407024177126809468929837238825929724347690286741745664954321978423217948032612014242259197547641939688671170448797793337772389402881597050836053600190796465356841854815345364603760973880577048094972514127927168012716533808940193270848107978748827830314418510066186143340535265182531168278874239419046840474851036627046793948871346889606110171431941353353973068748449048075698458249491648052389648819174067268925002850552576379341585401909411558453861766056501686719135482193084419207801844692077003704510964771035113482274355935353535716545537924167936930501372514378667780359290525756952318533641344935212691511892785226845491699643074192089408333000788327355346230893282263039406922177447869193822372995644109262734409755193139139497223436903929097544912315048284538743141015989339509244473247593269520669336465269392936249083130710537187040594646471999041138883980432319995836992961663685419728563389814285726202943549708779006742518705224747022104233840344898621306756848794414260896688452991609825694888060626332850612195335985935024630043915361960660739510080720197764791625686420175598789287952160549863029148071041829550555752126014211421169483261428274960461708895870805402428423982726881762798792337725263583377167565854734812927493477031590554041377478128421747678911313794727070361173980778048655103669839743713681707691806586793434218393886652658195551992224093924882462632483505219592406956703444807260730227144521884171859215433725510410609770456406248145917197498641703336276322355376012367443739594826167793452765311521066675049304773526519103208826540973640014736974443773134132392567684976683398679040616964181240829847332688109059816080689712867048077066186426411662221196282626289555592779447835830006048063317315268501546769596629292982939155355349759948893499762352041634708877156567181203197954317917636814276168107158907866913710180933875097415191953191169223444464734835085863005867797061955734807207986173522524624247391040911122532114256560128210991590582375762753955989994940771020163562148234034369882868637463712341249492992015564197460816529523059352725994756820818797458353277647956017582127425672022763742988065928704978236158792247013937932607140387355819279394001103009550320810704867852226533831044549192086580305402913072738980913494065085949735546685310969219297017556098396162425171283536753681020982155778527066376879383019143092594834306721760544678177328406160525741359378009517339816088524706803752251541554723118903702351891551501127856840501762135514611845479658475280798864611450851369121461667419067052471577595027441846599926903800356269485704446155968350833634565381843730243101773476832361178706479258494195602510935104287416940593970148666904717514564018959092175849850554961798044793965732635716495437594073721480603524938164779861078994112922504961536060095764380899996465853838236313023720017320755778778438974655672182895298731772804530330999254848640673933440868342325346329295948633392959898368706427170877856932311988616307666545126705870948169822893016817842288422375914983724624391702929525794272767493258626156147238699361877587148889055428304773007129410613558959689021394842189419446303456893668606552265134504863735913097798115562241691337755969428856725824031493820170087766458239321761398547746866438603877060992478720576857676962819562203398900692144550343685910786494801408689564008345894302746814032759945610369845439411940495515706168836662790101455061406916336982800804504474929470431085116320167154979239635374237571294168864186360185668488424518056667677108393322156252282997124413502855296383381413098019422216080606600887213133361182080493391353702553999465716676444841097009548524713940221680827453004666527503155559091362460759315054537529184923322275221238605239052433621498144424583259513244342910951160998467499308395020610517394978594416774199101383948647181000894883624650674110099645576616193935090262289148795376256976781201849382485783367536160350120407972884255200372668859783067478980236616840316495058910210672969142839895186806490561177761443437156045110109895068816743378224928573973444853293310401604906519644121628386273828018093193802043955348534945496690100573483873677070664649681351601400506525269467248308509063214625203483369597245220607357109063404341693278139808745755913461212775434864759330644859186559347861141411044845669022619585440333217728638515740913437985299596437290292965668680939171469483666116157281056913195700058371146419288950874700496931723952638932084901757454429329961938394494225322469589183801082789570429977695362119933861321588456794446581228358238098577093028487256372529253036751616989076255192983327270705522086330391033595100195409690971902731031138887939678099168110049215418144573643544846117175777266641768317126217712359961374465031261434967225877455396255903971002530728223026333783074725406412724261724427622191288682455035011102162514103464236367987572697126342500045177923216489713059010235705788956460719206755557763645281812441524672234765667783417893395246389404671765240987940002005043385032223706257843729037323289614414731744076002337752182273817977044676277366269444041390146041917637707800030147053512353461668178815135274056494286958803985382704210971397295029899422890671651207297769534345602622475729295813740086565369016855042204633588660456002758953431691052978464805368883029356437294502680505927700044738876289501114347444630470923365547498736861275898855067913502442114616720300812319323835313587407073613242946772045813926863753526438327551473412261473217551546152819074791597593940790984873357465913709369714382870761862969333877306814161131579443073891447381564114467833969413247940394861956155341341832896180397189645420586486263438193869319253060017146740549028209805119008023162057344358467454586241899234870162934863207994779593393605424693377415517888304381281332080962635226548959307185007341223599249279727111554496950719913779391790515202603307354874583317598480284437241313245604317832316383710440452504424281160208389705521277222758606559186210041440003853120583196731813061975101188380598396638262182052624550228174138662917717418739403161083393727805744204253081543659844483926840165969782338853394651518362627084716969554600807980792221389414544302549417676343433026089539097827857571219761719669990571175039874920958708427196704836552393099440995857065599858390799785555463915737810052092509659643831330437224193835443558428503812701228143580517031000319021568373438197662415579774949713433933376600083257323403787429939281436733375071711008565957723857613477375625305688845903210164821585797284478261837769175136426612903720126057298567681362783395772683109087496993304629117197466025293965319839879622817854700141572374250884499075166818283490460938809865901448267097455070897853962410733616216433911451073475461382916415364112340132048790462267857173528028476262189264506613372280543742056479024756669881130492723414147368090811294527100459303122804964112193894405774098397921724541471768492676124880065562486692554211399379663200713962425207497244290273343987161021692481960097977049382237645621046375274168221341301041468540980621942204920879580913956591964673001845632331839003375999307170315513901283572946038548050015823203213008839694327147388379302942599815159971938947448907059361110490143693513854102494735619900167915975329780526392838025001599987229231772023823069998844435358706645115457828688395975885826599466830575852902884083724827730767813404015166840978438920252804745098899715431261181744711552199134305378242746969850965695172940556585328482308675817313456527388109993917973187567486043675605995033589234770933191156688296841483193539579320599891058240464679225199600087868141884610924787299195425934501498366614398685562240191598636816832134451385405301641550833906951976586140484556418832061207887098060300698901344456025323238787268092510476004624692438471412216354399785832634727539913093109930460010307429804464967604028441719670471670976634329524444757324397201271617308033855461105625624715467621023551256396428290519112830662991064709320487724942354385468791256038335113655932872222693886080129079652352894290171684705724088304217011974561618553952431162062676037143545608284979204824488955212361169029297357491394056299660928687940721777250568938302876622118821234029546207967594346969882558735252158603769126638754207734898490981569716015201775447704371029172035575502411896459049218215128203941403744141758809852065025999717019650855242887841948552067949981825660855325403055549854431523958127518244757114801195157972461490756364893756739997373273158367645965377696154846825505686906065878365811180303223690896870889921562014708303358348063545598447895087431147885064223505333705759381130967078880445632170696612072799874476515460901867107258424532154362859080314317041501446341270834035974174328919803583703516445576591078156693054427938982421983563768830765942483461053030191993728972823969206513969851019542638926388986563502980509241458895095482355489543412566876502711798996758749765913899150408298804332265066538637414039647185880346072901735521832127105927968169401332971535397399713458982474884274582149949404950535764483410258965786702045643744282165543891112673222776946464951305538195170307083019012711144523491510428690296217322607178334597117211394114155912428368576487715594572054469016728054770924276285140233575400614902410739620944411001756413368150245030912355824955103655566119552358642623924887236518904574182217063296817641959522061042275220864687651990468596004408046234884142456526821711293628403759524880971838278583933545445632811530971242166599110071662992807261858469010070335656768784005444859436927652024055002460121710856121799063460357994651309710261469114719059564311712541276012972195723333887103323281688959545850757792572883750323944473837633418730935971543884211581731869307609869885297518516520574828886327600030289536732204392240593093703159829738576043969654574553374656426794536684460346261007449040793320328213297876400008183051190721024123636842482138844310421723561913393319485828914087739916289042435839720986065568419883653854332047350291484037676968277169985207579624250215733138893506466144540042018188583173021693353951903321346315641974362579582348188314041694801363791086315454013891691040667018840023021414728071396186194714477327584469380926024936211468279817478160314760634055088787093845144393403011612776366667895050619737291875460732652343900377302709377769596800625570254937277894134261872917473895972323549942430983618641523611897721364983255547669631330616627955028137864546871695564701341181184936426777683180626051995232378167445370949601604034725793640198185762826275341669029355948033795857957263342305930743640364431382613516748547035042283646639941492700548689788326085325089742960664219122287685378071829343920022971249167908925345249204761501454192559792560447327674022990850564998830331271601640523180985010320553248018039768117620474487813776150226199427112295040128054207387654461386425944255431980040947259729515248221505705465142133938414305824599953152324698240449236410937227359017737289748497249125494891792389629714218404883649299318847936420646619901124666814877987748307804030301760235790975544143708138797812041992596172851037900456381411258693083593693137322505163819213125182391297513850118642459519827515558775701002726116694066887855507112970418294661273646388873846093724115776194344448946692117733240361610477781292838947685079019141674049428562284460920904936805975159911188454668326372666317637886342522106414173250445045105138094914385541109150181404880875217415485287957248145363343973479364865768482811230978502753942433926637882442451997399710557795669896613883132667594428389943203205220921850170479444729346017709822462209616384760639765742639067669843378710113168481587404581377447292594183489861618484849098138959915869918352868079502374808182744990608270792028970121883694775412271169973390993970596261660410599359702963700350655370026340343601197098314922780050157064331617420627146983938349344800001745812815071052133545662613484634685573315589767931270025815194461986911271660015015901182541199906086420264714544734168495739873432151323059980315955567794847839570667485019373444597618422518153687728752989873566713944285119816656996865248127228160336738908753899785818060029015591607341102170443602232560212937842155107196422274826038418441005422746375364389142277626583131929444341502393105491825890263367069206195298893414128780022032776573823700112066567885477586968761305583042075978468968804061219357963101737843616468187094549176269336254339358505246096384940003727365802969866216441843887046260321440567411942635618016906799227642594593448160639731781064867950667648850673242055259947170360953521807394805388619774070115641602649990552113038526707745142956035095100402645031196608675049573222845558953487256229201352299740189693917306346742073471429782379511106669031464136111363892059411383943057611914416911952038275731580424247299604242971595519349241423041355028848308824066066393209471423146862539929085411394058483752030523517916061350299588606524963742037116328599928978301275599237824900369091626396438957181290467232006348513243880629652821357929035683746807320364397825123396393573175563209489442793136295445538331454408368434449021600643239988579822620851017631382104594343472782904030784276156921562091927365602572615634317606381335677236252995920182071453310614974601478052419613820385779568676068381444646463458760983305846398618494349295080709658785090496328394095988880495877692216777803841061208312574868498236373571528021089917634329178876381910081989035970912480332044655884828755336551662690660008457393210808674005122838853844518923192829554568527004059770744469392889230024413633735942439905343027108790473379492265102450213371934003211820017810118345742953968788148035277517855705998015423073072603466331603416678611375921501540160300540168765423062318646159231043511058572970032264145492667061460180973590970667210514197226207213636370336780968525227070789437776352689628655222065699483522852728109333704095387081173693482939675442684913889433479019228205469894629381140045586208457123158744531117254104941781838104094358326008389456398708904902876416662127656396024336343320530820960081754393592563754188567242861258227587595852555827044243827039620471857801244429521351733527977604679833061365506789806926755521522972504948228021219329215833936646473376023712128885625407152660694083769985290605748600135672245222151783208586521215637804428679099833520399220978845696179690670667614293979441918602058536189270862105133218960071568433901435975620256714020059569987604863102292897842219269686789170720719331511987636565470324211396149870059211392785487159317847490174835908912055092367533734122997804264318241161610085639293952263704513041145599251472662719649548699469558383002692385683665456626473089108674459275123208403847595655611489284583726033104072516933749233562299057383736581218192647860355314948424714982260154213594772364969108505775027321964955251714106650726476597752077211099664873865436251824639112013856234592991790898321182850036463195265462861939858241154819536271248571995186380069940931060632043016145380646985734106088281923516709397997321061160035742089984680196445193761044914140980601782231696096822321037243835645286318409323341814590698436766103855777925644265781431527663794342441723562548466455377142672146914635688999967840528141188808668496822411628582456115012921816139822947075487093623913823716769183284343003577022345981742713481613147260815867579748719598875570025155700853807585671466171632637907691281550965875736739047892638081439066744876987526910812829758165137989441704487744683923280055398643357059733226317724757983882541025405649416726235618098514571544478218140893778600806145116248169667992530438744613751817746875155872302868192935150358073375385048264515263276253340433353646231067148768753121039916031514911510011091426121565602278135207290889919289757062441490709239752130215653772928526606801170855971603502354121314412761207951065407014901603753719581460359330175290164592614696570258275775466574835382414393481511532157851402882362661443488824282486750655778385693169070803655588703671313579177648256659650462999637619961153440739437066914602305033732276456665272521171576829114408654118684966684985837857140605582544683026003287132684556270732788123616818499294185219415975443717952235210760340190211454256702142782147665091770962022877023699912172896108308582605648834457544239216489414962783809192639144758272503625829480182682547861906327531755096374683100803432154326241949054681325272642604992271658571075628009917394336867628523920825902355543101216625957912926156891748788314873977151447157681475842018665021939799330155912994855370162178377451473965532508813595972812224981061372492243183062407187982996786595879175782585065005040152098797023471988317162903339878098318565237662287862317198783023675562630210006779893792183879850403031920223590190356576583206295450191248758149975109286898783113335055138380098992716280383879922629851073194828572687495225397765807884706854731809913356761089784123566627313310552290926987231081739743759196925797390503463079744389136219624008040393663955158947846830528070960852399835234098164927610520432132024203051074293135012007979071717021748641472867977967255800196266270134300121392765032458292346916806016199006432619152845098056377197381078271028906686266598875038460667790809694122682419994000048842982874441807920277173031296044536856959367564846812516669037641586562669207974948795952038115818826249225129632319946808473718071524780106311863561108541005163786385790906176973422412386907912577239186110644252928761287647487203101878713062619467323599754884610043310907308245918340079222409396953954052267882905116770809859941738968546978955927926305313749504899387517927897987178540642315830911571902170067187963836701006484487661542167557511694566002348043144974648521211219454012551930611218040473540382155574491328355683069083089932575152607886432389517688138391341223647158855507777320203569956711167350788876229378548225355013963626056030459611995453944161037649039746218615347649830827566555034907998517959184358247798612653834720699614463314006467763450829532137661170640720217823273613382795731973583327927822605418622570246984682795658386852925001018970015436176465642348931536232917259432433738011162820147841801005950628248704916806454048461567394032681303931959325723549478675199941531293279004344689448316627037481684528566634883830665553112624587986623296522961834782601401529487252162851861633806161408745100729595112997090697229863762359399801337285459644286530210019175108615189854089238680287807422944717236624200861310527644352908774299449764225497107895759518439729942458324461446695423040795553306958700717117867436752957668431686803834013484582933830796336072355307638894912684467826760425747819154029989603953237338067998190951038840466137825491519340117360981336477846036530868796276138910999668126432016231242490032868135408205307061734207495462685128431046746337815211689615985027737681715432918170412623506502601712620801051372564568927019724392619339992995116530817050778391802279889895121254428207629221574807266381663277042693280729647697433975409455574018002606665336611764935168892212336505502978233415971808713450568163573209934416907820293921969457552232632420507969001159989893111138912176211020203582533672161287372089931062359659954607906972183965954328996231479919011814886408370576572135360413277652682157130741776865020193768811347492296108839002805924397759516404721836912095463459542668969918101057357670578339975534671242046291895497759398138450519993211276325158381685634364300163985464549197557462586570153456492797125288017514964312308610164578870738278087533291324148711454734011542034064658365966106916731340878574163253334892588179151710938674167712153632487127267213680655719552687655541956248377920772571734541871044083216325651485770543166368162699908220852284617029990200303307170868249378624183566940869440609995776743481151079471072322840212674478418197365649205081532360045423236970773900832621678910871705624630878770670956514028631322530680151669766753066773200989430478313324049211645576224500598383916891316578001305817023544044538551050449155772871097746057482589593564280594141046159448575891462752463613925321366607457690568496291525034766055832829786245057703708694945634772672771090540868822500185398861444625943891567475524376957632059066457727019165121263174654817653422726273735791830118789513503611238349347019454978414843560261942867357648901334613130893941958576262930188827000029347704106079678552076384028836527943487957050250916983964357387133138419343916181955986112878635853418828889733690821164109360816902083303864340931552353326539990953601496980060937409134166970715470470588967324998978613098254547362929943311538756404214279927455935414987125239163932823413288872523536680204404605885818678435923661707284041981574379638928258206092942759357334577284326514465948035697353221104212109884573950978843849065793892245883206326605143112208501732577379472630545364878421046880650531452713280819360566014765581797228838198107833973766251346431474206912069969792576254200759171666052433027713129210159780894571701471825571483796296669234455744737668533132314085086042294518788039329727163480371807130773267625149278725758836343821457185016292872106185805981366842916590287362523283897645469055046271530908757759088302415323857139713893930546071598226600672616508040823470113261783142778896746062557948906555522373071411816765557628309842830216048002169848720405420705890040667865658790822070928935808141647245937725722820364561666173269354030063177194953044671527320536235878560717167839106269248007468727695314797834039210566636457522011773863124450368301946515075056726765413743771048744084768953853639222936501766945539256300664229377568765690341705876314580883304101252086457315931823100441850492505026790670210040087050299898664355962233461545988726397584583552044588859232153914457275971488319401918377448663455537127114930726011482699458951866522865737472791165037126702104237644609033368022443181717358179584083988221722701868201715519423954054330382687595586938098257980590324652306781342167877857627332272936580999805526262935940894609825401897922957880644598240138229663768514074187528263648873711338761737592659470689613664594345588715367734044329486260685828597719671985945770684538412745937625385394598296366822984862204167785602345180835873178499296410310608624007623792008953911822169380681531934825789674248999973938995234443426598912992882815200963541218713555229700331529404991996706764196569985743861983004120556902626450211000508692163074083571079352603033132432464816860075260706596664894960266177087110177339340534986377899990058749313897116085948746995747641512452122593482093890889525658773216951690234465233285310802056360708987450301147476822328283976905738535360027255055356595491708293257749281393183495805326447995325786724408591559158394371479786822049921070519991211946129762024345859056680995814224787275304939323874476349462869028759344958248199249115391604359573985611216075276802816931016728207939427902368890817938887787910008695684953165521580365542516747935862975271207187131270722562096942761055141861937971094672317503334093009180794740779038420237483777221755855600046099685993570191776199321316657159343687728385939690444935077445162831314236072384987810803853905617205131967134225814888460577731218449844850476064648770067717775726634647006430303157388338548033983184187863423441230980846433992487979393145299907199383775383505583440167039003469430242182022430315382215701154945937668306913289487547103847430317661181908396160730543788076874073035654438233766228191102902742665501503086767259274044960834316986887034818443747882034991058190818455510591004948966834206753303207449638500348284122488362117827350439271686265462061073973894074621707820601235924748699509694331060878764831772508015141033261249402890230529020977002718242598986049565189113718110765137864061389150039251922744117457790965857455044301667707313204398514682541673925345300896163099833658851982845451576961299981645113163077753217090352980980503773057193680545208346738861743489631976181273739754443665498941432246480788234605442997093143748689220375724246689470090564581702877832452752776621353977480189811010933492358962616780570990213388041189168125707415639282264028713051289679444404403333806623103410089070796049132279317427642376739066894702130909981914048017754648659920820739037264805126820940741202689090631263033197386423474207226327298336547133419760882250973499958585752983945257454539954966466491848898029332673190417150995435151523088626808626924183444318655082233358773314342505542116805922317723825449576174812408281764188525282539815073070806255670435095789057479206399635899414258964959762179529849179611379261849188468192929775971319396268925021295514136930626861206604491391636252511474151909103641358932260130505054122146843693428860310577383057025977693460116026378683258937770922274093555652669085013406222437547668307276491356183198693672521544152073553944630629928193641930473700160543578358735594802189098533719251858752052628115842348320241841455241709488985848813888554289750357342421432103848161937298613498277931764636328696255542545277483092773647420861726535536230153910356001074466926605283656246413947898870736025949669376297120755645817960929370940279290500666766637035655971896316655402000950898367194278642525448457981194092654482829869788066728274469236226088584420767054019145550410481735246988955984862887738919297462976124280842850509608323935868177718028806953014063826422419517598479459065650403914021239002643838046427654837808175006950667542263944333048028901379864672480612550140973426784271307718920309297732935913145057937406469870044939406558819656239339465703693751947955310537391727668803568676132197521714736682865111422709681053539095943945337890103221337390330802821223003838723009671389097123696336532810339833506454955384154594741880686084722268548773349343302031213785975275234803893713120966503476512343116433447770202979898544359194124259868361705644715850076381854245727505574971621359595916519296999948705106230670624319580238596533473559461133784674800902786710677395144612211215803043907526087038656445333968320915037647593563113031458418325059018794896383995965476817910097869728680183497654908893371898511172062420150630130412242561021850018086182937052235859591083041171169439759778726090833432647456007476554281213176169518651894417709098571425095173121623262043782427265512604093488293894073397347379604128520680626375079522693792037987741636681798797017139985181097014043079381222635748759614538457114094911855552373943292578190511984081608381195325146357535906617379869528978750773612670363525131817116459187540575799803566304966059367900174618306953619053310435612884208062374899486088087687131401859368756369055912623286067753621148615643173073417425160253041774990952494917478390122888157379346153235537306756006984227569863790784585103242870278857319976469840411457447294557479898559941071366942617172452008609286130797676810274039731174400621829880578891835764121927402288349118904943457720107962679289681157403503550287796765375634720302859043319726737554291503190566625614935037081431619379700711210894273321840136637750864444420082981441758285053851538379352142855286602625703344167008903001874755634899277103772162815421280482082882101238487414843218587020130992068905698567640721814961422947698715371415452745195598317335961309507250064002868701187006438776291456165415420982890761957905877258124662614002354019240764430486004389104218416879410497912107797971362754496052931970403109079418333506581759159958202110119189686815012188653837474478290792899976221534040925889500878000867010519477796153720104391044097197993926301136455075164368229385325628280246465184190527081042726466773930409357823617556192727687702704786321191161790974769958110396944728851855072647750155497626486618009679635027933589239673276684901150472563892626983509394756255751394689957838721350481205670509910775833920240956290731941082478585824851882986415360636070073366224589018987267377282224954131258385592282304279482261929238336472549122455248328945706476653489510998438963663055496987972943023701121984851773087748852263321464471525275954547856106193141212861978068510434960099514361814916819682016723559473091736749885768357489123590343930717694816054333190660066438672416702815189848525499894010274907637588816152573654666500532974289160008879418318701410016328923577314750440202438558519007906999300863429366252700710065207257439066891869336838040867450065444587672253819182033981254600356184711799989318160745717207846244762585103564791917050704298661911754597247465171608579373759862784035954173770559337674318207655578948455368109915015991730335476138732147085641801020555593031346012480557388967018821772657781665290587550055464638951633832039793956469899793666873320887449288511998595950008295358524246154887737405880928048153326799058290080376606759656907553735492784646133947719996851407170650694981687838453188199452352307437634224138077641100200727163451023052076570907747949260957780793673787989286096320317424041440960790555455109540487802736096301431165509762162548739470898709778766057725462516805978188180014675339309305318935754494836090991805113658175720733275074297219610047578914036538025486967511112945988674627063367388325475213419378414716842160561359906376811268882469344787833642047203182105209541507641407352715894636173246792674414313361481825358102680310879235520472763220362545646306391910279416991522337212131069103248593753193843583162438309811305947214268675336097122885175592375844641269801987409423230408700482914198449228019798650015212290722136263245095686238740315202857950520829841481124353626280312600642450177324511289119896064883188301049811881571132885576712762118345057011470454680936565916307074086540547563441039562815263478888395760608905329378215697098653668761889507103766861167678683436681630867324892638168269450388367943299751216331455265785240172217769527092994827749954958032005926544765052440497512768594618744634356199295266551532619327751041728194495720354711460400411046348509889487005876468588727985822499212966942574977111612928940929670040319553585568527823188582088508221176927302509881319742720991040760223433867088546175066436500414245314211218638971315408931814828383809423020033461169425078494367503285050529083584099233036904566701913292944414083728437598770515063130987311686636874408376410062891115461832720479986257101324665719964912562770495480788082533948117836911964117297859896975357590723429592797183530346939672247204755583534194487673481347922666452972537970988345850662228449625478222599217649867359799947798886925955352150694975041873316545925454985363335537246075248227081025437488823001105639376413716410508662751247658465115450458195544756424256124385395688655579026892775267171856721207186259218019057401895067898341643696911904798384474998898243587304501495745330069644610131005722027791216104698071003151769484679934501209728354584890176780467584426599990401398599479358297497838303458084857209454480963725606377918518576898944339772386654663994964187866998337407807517599073769180711084069240306836034961831382067155245778170948101215864828310760219568683579134875414963981058180766301938179705260382018300063632604512230406886891183364133416111878133295594956079265584454400548611155265636871446642509389937267513476651089461699012005981336211409851033445846210020529988500577518055163269959536848417785851847027687853909132896441104765739829457659346690712898105701912505778438237263442989278956100351160132422576554743372009985930061744688543169560886431180024975988783407848473655116217484486575416570621017464866754497501777874063011247267141562232453137754911008738851704035464351300471092316514647910693782565908750184239775749994506547533396003597915453329526698824274338919598976248462160470592629523973271268688084786963536504552997037664204889323984606932247446343449570673831461541386052042776001096433082521478494727630562926505895489386838570821880108883580232550729900225633957136360483709939052975222821735757909258193890393918516037007040958697541838490107849139999589651228273701221149107587732563436830008894480267069858248724531511244496645893623755632231602163071499318710821396734897613188776255112617041723736451136291524741737468981175290545570961217008786395444918063903177613189353027683893916935349486216349317473624828006070012237924613079993765819960338943349400954991817414871288240450766842608623131371594707668073574588385590932211559795138475930953665108613189246540295673873295745036006291080333902967929620830523265694595567643497044622045461891579997302574549946263696453816261308763729832887815400827201936660924425674438837889322290311993718686896096838020441627102835221180941979371792999276525956835950832834258469598128888346006958316718306183785150104121265780419631529967184883195445478342210402344382777959755781063369249474633809853553581719602329984668052191804594056173764170446441731882655156094829665270211580523397635980782248212513507830545857242839016174721282860192056317262362433311629509754109760185853041837745585484057714875597156451588798002996713531234712045899446301970697330060666235031363478686192027732193291591253173606976917038059148276118415345007860412330396023228713133046464345788334262464745265728120477882958016269269556350096543424538400557358792121074058415835724223528912946065086048918566960032762053632100388429225589670898906218971900378237449738769301844500576822653321803536506616430004309116740138435271407272412657255960730624755098175684924713360713122739410866738583333083906159355080763498460873060339408022400502323919217077833454648647680847687335287761218156176894968043886910606300007698128740196889312971433713664315069053138713356991677297250523441159840641258038192527043373355917699176053633787382055477117832496888912153666491995171634096865430103949843368034257306317644344192673956661181224570421983998602146359564913450199267909911937490648543993531190333502253681478003766957119213927241874205745755292156529808156098048978292200047988454087398096652119015725600385171894726654032827996573259308699001086665891600721305063683167287981226264206421784349310703052464061957877693424074832989598207408089183533797909365250547265159717008075446705768969618431200241849747306009847009635635872386374954005367238823684903037399204779660109449064809052412749417253669101606787030769955630913922092100047144254551433853941518214461735150453703796987503065252432126391129858585695654685378841004622696920550540759291700581208590004315151784573371816551836402444069294117744928687646418360157934683470911114825797275513506245010160533957225211418933393825606143148461968876083588711886633188053337591456912144413303805128933509990063878814098419593226167393708643359545917177206271391575295580163753311175920492291864068901446665866291347513576738696481674368612150406160463264357257768191205446046337653988802400233100992380931345816813964597456231730315849985049615643401646920249364078352392635582507276755510756956249393322428954074921709584525025659508820734877466226922425665359581432793076786637171902304914280912109168786794458152556914070349626479238777462444700550869462320203185991118704954901415748547807603096377156344749027642203323705537669207642330583963456863848611963209064811994096966073413455219939801774055758993820339458833211652129142004540211174120635302558068364438250551396035263939804441924579754652861155770010863971821080485295390147792333193900093599109881064603318153069259467098608397893991108324982958226743694057145630817088327346867805232967714036178636631490328239804998007026227291243745458992496484472697767743398728432522053382173561405761732482859477692275166757611503533698815422873487531871646455555154875342564870319232816891188652681829239618018550094029485596803101118477451485034941060446001203539097792104707334377430743668828834972571880652001307960005518213193320208611489084170286645110937435282296288987426771123795763557796373318268727899357002455344745889067824498114205041818545682382072334439860560174464499636217893131233701042365477896070539254658025868176537390233277287091905214349335800250845870187929073197115426555463524475527753994770743327830968795325074743057464693533213017228295348936718369618613806070862627011502983314465670411914563104092583881846703083529003124049542878195780646366078729663729621841858644642449728470711400438609454711609074179106495799924786183500472664458970945073934398449435343284648593634986136640996117053606585575584743513130432725758047545138965884706039235091358396858209591859772974469971230206181965070201067114692412584589694701009395463435107652121642240509603372674209253466385757653126047986688564302542397861740675991761209893760720598004396159615830563510478928602158616826745249726484144351400468798155248589139291550317902472393844905843271115989320067520539240790241238159377129633021221653592534557209320524176359838005624036969195522522289837839256833052924962454953030944198924348585314509077151728610163625752577076883943285499549703960749011984177750921037599978255379184386147473855534884705730975140139271103491072230764603513035284636561922317828453375054957542982013607391201020523153621023505018268703537938718615530787153582442117652229173875634402060273412745363875219312463046990058537792281471248760409561327400698683134816298299083984477166125304482959530915361125588194901106321591435186108869094570732454492112339596573129061341434840342763133056773190621129810928333804309663135860547625607654862708043068468819477291544043195416400460781093277036251495993700973575874286459625188694582292655447138656859879212632683370212026638649105900099094490401914581477740309967514241790034159577874537685033620120248001934525504891942390083909048158514966713482719411931032037854140924537346139182090806584218207995616459945063371408823980460335060445660850988307353055840056011139569233158754756571214175982541322075997569811023007505207799349037606142657417468235826213168742768281549264691435687527320167173400428199310565536361423683563926433654508164853844833280099651070976843736183047238441937530745922815685472803772622942635195012545313023901499803969852318014434919445524579561455101222012946518682466284139051414827341969093451157238621466185024951052546854175567464724223603502781625652496502994018967011827549357368972051228753817201708614196751876548366840926471138502732508504348345081986766474203221858715862696340665773838690384968553760130423436619010776323078307029942035974884148709249511987369683272137808655035502101090366668914338634830806569742533185936802321695582275661409718083178745475291527579922247271585673636077316528470515738317670148997026939702944241159818614263122770599085064208443717329387895995462312966101218815186864718881670172293590487156144692859080234534297328464349203038677836029685468667430699305625107382200688530908189357466985022120674971873500253242002467493285271159200743960953979713529824854080201260783197727317576038024350856370445745831289191312569459396763803236730314096915507028524747400596349179865331275710493071705264603107348639265256936918474653661585100390217045171969465398704473576150557788997889354023713223601660183368451743739464528848616587577628044544075051669864619014496760511841128578020172665294612214734984013745609056920294797732799608780472704951838747471942954475420377792065772110468013859336322818764045251541650867822120631672843205391731280532005198511956152681454469896475165644908990144003394899609734159583288677299145298452847412723283515087131796574184400416073913477958778528408514710119453227270763214895882340112582506358826836618728118995100485095828107221031494563758252245690252210421711684018400471973313531544555318427114462218648355848039425655506251066036204356121330213966630765912881210775578911999236279830439709540913863064627552411846342938141558479281445940165701570726372973210845687107675683494486727596417685650149743518035312278941352971884048379162823298444128412073323515630918694292949769695519328150432381264882969491767433334547105230214611884092059870019655727873420224368968392639496292830611769567873069657283249237737587672235600490618918355695833362591304892875267171470703112872261439669614827211109262452316268609811178066993358844974331353395845923004057532917290597737373833420760413124421274299869509909908278335491221153262662662164279902737817415363024123609395168204577656254379390684792035642375570493620754942106493374487140829206528799490059898238772667235392035301472447568768854005926630868743810759825280220385698764911864989439756390509290927420776641316475184015662481738047971340789239563017774962423978383966990377752220824058595528352924575120892928231542030341157163438505410828585543437417735802324756987007499820568384303850947859668435273797519856436196227101576711621094588445035419375567096093623220519017720611688307548319357746344312250270747977265968217655270481271718218281434434282960492459232048557409781036076967954304040919474715445032565517217341245985257919356248491589177434282916820155833601268150693141304637159588857524250726595174190511409243763514738765047214626800651094861755098301187273652001358656959768894806580482665054989048916138435311431792691911776358256727870618604391844754903333847667432034600040467377839046113413010922978620185637205157413871562747875839373356135216903741899334239002504901399231374114644577022079864311050386346176848679470781658413679504897455615762290077379307086033054777227072188676535456943330100901328324181529445746606293344902401461907508289898729703056228616629630504794249387758213648579963413853026598559722701294402770494397163548030549731510741569917564276206696126792693428138581643391340307063006215892546334969751284266132092237022219366085011723971286885885561914339235242289120372695222897422797965786698230336549265886058001674266305038891247423728082028297572691746654203507162743438937671954970296504337859274625613984410208965301586080139458918742031927989773406347372979429221980235708230947911551025930033474180807973391014916252942141721217082261811506706247008936249335420827921322442970658002799971498918569734324072648907181383581651397274070261456055262795431589415476070159469727295992212943115830510750920366018302692893939919129937484494656556378368213241286181449496089329797905679420108488039609298903230293167572193244905922919896309058214614800699339003178585083236345816573717389555149131512655776170174886226932916403620843403706348269504444355643515848534524472956710674418027587714283818660438649991024790688321997051327544901393906530953437451118331434649059819411767099998288935034564966883180979043519310842463122273709660368959052608363673177083307843443551854327211552401474647146921199846299137362659655368472530545914086571512768463989680515274533634876558337359452468336435282016423846412454184276505158251874464455827776784897617862480040569705627206875326739078536257307492265631580508943910102989813404251067249288741897230327481246679025169247067788282082716900193124902597560164928511741408123521864314128329572600302581715541650017268840441248265898683957272288318608293048210889623228839042812206814823169561563577733963967625616339515890183690638862134063786475507507443317961518970624165969481294776902697965534891305180852687608085411163011274875103758679306915675125867869307997020639828994275456842125279825580746890519313633113314167892939771063077427937379782641042973267672444174434858295484037404721114359485095954519617665840865816024512396517177722427282230489659695089315317514795568292064456345189508596638147706602532890730223011194223261913337294282273185870591353762528112603168553929120477892278474184951252609832149357389251114058613839842735570266817347407672418266120884386247021827684161642997343888434472338884970924681308177658234392645092115630230007398339890568444352901940849537473260672938410764673957327363473326786143745549456209929601286425375257098309356088134628930177896665409903162234276110163895393758916835831577588193003560263045669402701040557141259162946633195370247905125779155888015981117087919899238180105543845483486611006727853626372750275814594217949737720876203929646999087904529943476484426700217830233359702297419495838287268315815172951420345284630201352338634549013524782891887204627059285995116207827753299385671095036347257734977563083078071231554415731403988535966922101117835475234665952383908123373720113528185850177851671963833934549075102383259728502954956102268873912205386563148959239047560379182549430258950517397939442520641155673906931913417547242476730372392714795936033776213744596754087113045699112247411694952167416563860425617612691554759683798354988011702798100269004425644948634000708393371073625940619593415006107722370136335588395440553826869005979013263808876115349997187572762907915710943998888586324749164137288073921494098622225389767386538780411034215607699081143787675858048001021827965272897664697644593562175061034855584444329515832637959529030035773101266196868682592018385820566726420999699222025651128342199191649762931109210235485561299492493229809744890174086049467655897973037048609599397486748182919346416417401532102626827816041517928083400632528106355186885802551362177967590648318888192667419360519631660923878222340138814375403561041514359267900186305172365058537130335225052058512335175544354536663408849713241349964785787344179049437708707983430557174377437425022219047297768932437559461872459595135845759045817681440917273062408859339894908509308343858876534821880240248255886205004379124736425942119819800460379601116745821318019608061015343446532397087298998273760422565926159545982180122989614495800447487665591106364479421353246336759002694920233824670700019661659454277553573564211425109690027590657044681071138826934475721421474988131632535808201080929936700296513931632178388877486621289841451051383022208362027555080216634755592078028597684420696354313080229726675849634240522107201092526767109519843264759271732258302626066302030612684478487684016199751763160374339792039838158030401342011678951785340529866353927684949904123031847892467838449664195499622640288379341867680201143083139590904657070047365729717919252137621667987930802926214835229379482574738367661450062738512717140886101860411589194056734438714873216473605917034025840242443269414510063068909586473346588385277008714912866210919312024514566877006832342938214727696027665645350070063478758329306647415254631112213905580774547953094149667494637735929682801243228733657894563801278640900743454872673470137077854340710658244895631835714642947877482547622880495479181929297133757994831509161746804320284513464595839699356818959683294222710096260997729949128146551821104489448163149592795648703056945884547043416080272254808292927311248386435979126251515284952238726610369802991550488036142157173199721488929069464070228722020914515192501676669318988705791385408150926687572675108825196506966385690875359379851998848443978906825315973983902092034992351622417666300282423777199928826891551940850567681569179119335437390423590647446689281340828922158209429200693470407902092870947155641900952568879810919945936203658843683108434157819511963281002576307065917702968607254729669604543576578763614144910616677777684716520591514751306465398764296273003831108696464540361894918066405017176179849888004921506418790243771020715265012940250779669822655410584552179159179805491730754182251293171206759296440989666507069504402740683238711660573431488429945021161413087685886082860744876939702926537690562567909147623221674230475382453656561140261592114301198833688756528734888691792552028374479326909984197078820513364692033157377560595803921130287155664596399011110588092858757741099960954313111640057744043615975779273083120662186759929840047154176784342945271791045178047159860821090170028482496499486479869200871761149383923816101007310141201405231421170408061264450017402512874916958635973258123451611972103437973264330164030029699624934425132605724329811312023194136880308844779178335723419110543754881620694623248696956890078563159146930530067886735127893569867213860893199720176697964026198739656104016781114079666800125318400036775396122774993171369437038743249666349570604884763433687956294539269815963394415789214326571569992496361356468256789582571820737899823229611592276789576223411758639000466222602437513955900439796713799800025305869972693951751096553305112615840011495894587924883117772544336202213670867437186836610338982050181871925476144908838560548377229616367177040526501279995024935581119201603335225732561218492200893591718499642563141365628731227581578456074680002764920511373147364592744297693019838928342294959469258427688729397130608201976358826654910715597575891329332474588915630384349909850172533827514958917580174154636685214399152299571911377244373763935758775803646125954508843471025001551212617911592216884785893420901567157715166574490566093309581650212436901280743632858125234623290289463772912697496731801516176882594177103229686188341195727314086650777658669777830798441479825914662928629411459219540306901691991283310262287396840172082826596225602759752532413387474767550820089865819660307204441750758119733958462167135480265083592894876000036048548933722544496032007732229903899445715307033335375209587804880230407588655519142951289350221797020506071979728643600373708063760664183574120917496517182586234411270600222374135687921819975022885046684390571707396157308571488536599424532758155542638609472222291137442188918664380660035315353107419480457842378674376340681290114727915077879792471789000974321322815804784225527643272836616220192987753381831472077917360056419304792049451432022143478514063936106720762105955405953006513385468573543647479298822259666888993291845671479032864718202316343335411165933700407418515421300484301075812179274789851218713412011501736619183960415142402062515889480848966216623856574238389901041739229571021551581178607591693726986102225183457140667890096566162624679248718849190158611648415153011402758289435747634522275488282747062174899144102031579082841229746552295966624698865974074736615891400718279468722387227892108846176303534661799907526577187382411694644080428463034854604441235963719197947913244924449347440240788946309593027936316120005649967155299016995905930104517268945705964954206119581125748588806431909969581707987572678413082848841666931610020311278639122942386467907012636516742576713262254926663993663161966481293095776990336298733166206564818343960336903373886992259666476502220584783772653406929729688811520681675329226043000570606204367199127623993157535164170447673973928489708084875028077779399607141541835338008115666198769440765680168508013075642258322676758202233619772798380963766067399668633567513569399951894521894778249040414144385398484976665325349904395147114698530839728874393584214459182278723032535483472288036717123240831309310480629433219066578268749880587040794131621489852804548056326715303169991904077136066450599011914176408345062574185184742488976478068425067859590883031471817940381943565534892116429084161875104435767139010801977534641867128260242806533243314066602310233618847563167596042821988895207237463760285764670937933762524332331603410142020395869171665401185445693520038694169796016826740727793635864143806783738619573652541560997024090314939217365554985125432483844248915926738159354654779520872565023016266698342795214573571399953095662432563994105344109560401958119086194822578754507918277356368038492239341894962291115178999013653467618917359140351918861865815879982212067128161068062641914070803495253955085128498147320296330734636556774925761330007153591792206566950763156381639696520239779167282275377168037347108902193925996033403139863712955876065741592389843080688846101955430105527058258795748635016396821330117063369507489604657728261867182512363236834638173971775015853013913230219748773144660443328954818228644849735774233509709796472716516915522961362614969258156926556284271074379200068880614447472055534671196204877142400427003107397946701598110033418252435736534788592307870647975803485376323742689281567345539365920654471201692386070583126244897038202487352399809374874320764522732313996773061382309423060482691900719423275644723848156020059402027372351288668883557432960842847402126511211285079136080594241059146433058327604542353275031943586212434019089425765002659368813748664023032669714185312191010832803788886139363463269731610122224208902630571945479008639837725134243575878354626095615242229040840783913293974608487733446678280680872812894606074733169753882090184217673741856911941847956640930368288656555737522716552564947453055753977206473063913516340512954856106238512680655948235743573314242888746935276807785575280075972545538057239394219074816873544570337719450041318451449916021290444476567181132122420827518124032162659390412394018486150744893733086289897902760830909453640774883127910209293548336330194627306459336033492405893243448366525277335034292102561745784782282161209845119823236549625892370899638036182445249911786849789398451774221167383727197262673191598703094325809275933661780003761570141655789829429563379868223012512040896316542658139357338945341819556640647526701440165066473257464687684761739587590915759722123369718758943856498661253000452043811574126979519851082694071318658537902517383195647420065346057477482507774685527118551021894924299974168396862465054002376370695156872158427613199580290318414269957506145052397468490832248166463915795965817366172092135620218245541141707873007902754026161392378485810636443431555801713133568915111767296240929960497952719107075619691276785669822057312458103915420668209403920931676207724867332176669949287045130290822158441978649897885160759733709056617991894351645958300736772944628292635447986191566440374033239031165602860358333217556956846745005591287553250444871381722632219592876890954849982981389413655289489648043677509942319341196459065013558640962748128300957579891680907852654945886598079054622998177783128691028851350690415807601289607916768972706561198086484477850459738807601331875557113583964750594238104711893799473698847100445748807436226979949290515626628778150784418211869738178011845919573459925807186323159056583544386015362756314188319529709454050588761421028791560824773472366319849829517018407050187443823935165819180926066728313033009152536605397879486027881166032361163755687149985811869239393820630231198047004438561247761884278285883318455263814715298897501624751368673598502135690768689738127779800395796131397061779324256023348678389147109814250531216135906065243870886043395403463150046196579384033686845329462302654973948099284995115118624959540763142761801592949053206997581749569489443281705018429980264621737925761094086114957349738287042472164326565070129798698600564402616109670455844627923361306208319258536631982917734106151082563709693587951387806223080015212051042269533626111524906270761092347835812467211683163860406569029641165186640297819213894998579449958619334622645923057260113925293071925747298661196651598595411249683243604468042963331773100038467302502450277262243340491440760943003294386413228582796329145472414975783320018565718205258483056152258008429051024838119491725954216873077912081360519475248964019772534119806800120647133053943118546235619614869835927587864015252268269559344892762033721669124944738348668223130913995530953355275222544123998432117760429850397750628609548085658754260174667668039745307727824482641822046028542027956924335095689563830011878959944396062156496521484068494927495214166556704426518061278499250741437241418321610814183669990700958469741454063354827786282236715016980448031548207025129837265680513588468569986816736905193433264277171706752086003991001453545947678881559116530320159016530174357156156298922526561133556144679257244575790110448790165885284183966894620550599057395742030238159682691720628701429697502302172615385015690520367515006509784098749382459945318559982119523593651713774590064587605693086175406459205577318558574526840461081834055943241240875951507519773235550095111827341733011892076333587958765429593026090826376862941968919782444555620947636480843056684558634640338972528670248814030142574454523463742747783744257651026676090955078177211758790124028202940198405445390458797319012449088624852517207929517532235527133532565153829995514828870787728637418852802016194791768904900803806663137015045938780449450009297138961612552139859945728372923246051286817664654610392710739095969993369636029366385931874604098759197965720819196876039354948165680155154795192394491227913898007176033439036228266228229110025386322820665861364969608480132725220906999344774868929943760482408251679613046056817234016615915078000179039095667966978903743099963501049093088744519173058066270779478514914378916572181385580012174769314618659984266882092492854157453159211149742074168280934432526788626991420342013139220868880166878017848520475639050738578714082312223988914776701667014126040270462318166087657638443522119007733636046669009989028538931201684458765443464517451643366851450141288215248038054719705464336848441567994896550152278358773412359719463131334753197869637529736296763652615342241170589590246669552591398864045754052346591045590002647254796857293871658244933698299663429204777761213944145287341405127386312326874802690422164582439706641367714207627466082422776095643258165780806631823460491625637441932774812334318233144017887360970207992018901897579563667697898987080276746209416870753104261798222977144021966608027969001465630265565322304689109256501377516476055435530763318004789123041232507437922921176410882534526407417707418573804326693472764814911589504249254023369297216822997207276079612770690436712272159952712760170871446807106677628542395899521619759406320216271903304564228721260497382349993833166979152967736681512335580814761021995568478122056572372540054302223572929551292619582239251860277557710667165423095342051452079870360039656829659928863782309877181336810345837078731858539329332311087667682397603427454253626010972619300484906671010447779998259640558713858849114394118464920445333198567672632320365639506438374026124272724733490376110838449987813992569746478775327605139836071202624260916837740805020937730439220691836268314340817655794160951544742441830141785266279445989619294366158944711137926512612395192154114655037159932051191866534618158428075760928363797027322556184793435738242345243296992038669286279973105066267862726801880578106821199345284694985668572329874721036326332231406435861155318355619772194398858264612937745753572567819814446335175591129250081492285471513760909640746803477890470050925805978954802483519124661349246052255347411597363657078537213348103825653179506516863261765203400974736035936963450571597789935271796614231475860079947396433115789201238490489424001459831912919212811646935237028615830531299678898530113069986169578509182087254238678182582296992987924257623482478692503534161220364889629405985862879752359051809268106334064316590111184091078430480418585917435409199222829219128630633966636759809192393401714127490892843994505086339629218596749064597321122027559053852934945963003602166380927465705927210537566791677312949656024995344033933448544944311143173313248144174472552659996866512578021921381729265389097275440686055737531887677239064897893116270199658935366342362586391579989333499651225726644386286111139843786964777744573711507376199780058686035339163055566077750204273895928705067611473795082786555917549120666693472399737959480381912789367102837481393879018169108286272739067580004820975986779678996380857267704640168694424306012437245239849978076331045916878221561374271511055150412741062674578630424541996301654825412289808556696831512860036684044055411181044924631059926905550573387386945097040450448529974635854584616258073803899316633677175080313386209241193146590443751818786122352054632569816124095503738953787963772723271980427907453054657148020651049956103972856444447886800933029557638598307228343262941412099950973733684315064303158646661498412429260840350833974658418929591032224681232243985825487036611337709812448004173974522333834909566477518792531328878673161593181607204757146064783055395521355103801776585077185015144827487136274763717711505253907416366587559964639813982303797230813255060253015704601284836333565327934965810811235967157531884964619294529400256221096671137623744417147218146727766542067158667638540702337766904709299955371696724974151607598617197972882664110113886374209008553909211386129726598149362380632045055579768905746998853950860499328030679051583467333532259012668901166055810588234995185466036795341376043845309206425312860084417662729799698818451484923877417536700808452112487646995158482859814177088479757467484488040578644107047856502322534455568298247275032878464301681589619973433096042630840367075822246672472022007916426038243565956762678668266349134667989691118696883821003083318946017380044584755809847165358382249477252059013424840736389819881761104765922699963874505033356849495263941090689428960852910910426864066334466810124842803032618148846097617624897199921391935593090644618223581717347456839086297606878240337932023651819765280659670830437591325111229309791098903711570419224996752209674967175995120351458763907841919644108640999516541254956145930782654277743263390641874066107944151724448019691042312111177469738559145335830807159618228473180764609487474443819115406515586370669267299511464038826803987916915573201950579825707706305688329957809651226903641235204262350184454304270292953774978736243064873379353183519944150013615775205520123561702141097337277260800253236015239852274468640120719446160829714279442262199222555318635248814501366113573425227725631014069700101414352860736038363832794197505042101628949645870776473330975724019876865621087201637386033269620549981330813323627179948422303079667386924003367641859680361931082602458052527799975441501931326470893530266065175683507994031101498835839417988324332082546531847244276791286220429030305535685956972818530555695836943358039024631276273067256004134348757434222410394395923803363117348566078765759403516861535820458556481996872728434810892367394587917200777315769050758384533518922893140297823618252230631586909499213124018892390124784068889401398491040997931069027033170801378575563044713040488011799647978289093871918624394608284536117736065901912633204978135377367442378921926395283891392604813944417514856062453146024441836010079613501591961538467306544474563067377200138823402908468278851500150656300503469175940605676719455139117439110464364485551553736517231540183075911414564638729941839120557085247184189016679911856388854933142429366394179156936611059502533829266114279679461743302779499798339477906909487459880807225315986757898735158850441502292793604379550033324073390205126901367631602787381965283062252327079798514127138948107896949064233731350420239802327334354322228075945942689637081201237979428148862749959316702336988729711117867120433311633015050808995870632130072192407877350196552972146497079611628990676380772462598548823040637311820412765596148145637506648652306274381505203287370537413799071086525897902794400570508195278490915188757656571934130369068310875606669005409569742759656881876648050577779104285680407264806292181846163596995483013023570078469162082034718623535565708284514748042572574329537906850366246688447900411361701972501941013916650367694641005428969978750189750387090822191599910802728725484970399102866785279689690866325129606455633485143709843295200905640423060721009368102845938899885704482778052315976869254861807139968856739658696704225036035876493803980696859502102236695567805331114464844259914836457251049021699743949603573452651784774984258020069253599966211522243018645260582744421048548809453958182472142068871015483637968861581557127113548021872005449839649182071030439764506328539488352788708554071523949705162289305714627509473868247879750581651101072550614558349368506942272475510416608668304204212420046875599583916973303713179202148773116059261417312844891688622535356256097897980764943550816045983100706534035294498744951497907989996682907394130417770819197487087868448496380353105518074317429472864929691196616375464822733783917714408231864060568275854615242792071503347935932803344253282593372065167250329030720078030480124441466043073421256803662490669498399126059415462642823636113651060156571527584890318159330114656482359628878819218151032426920249047696023226679160456947030907934016774268092848636759385592517427695169092668004963841652934171345862407904425694616795101344024481782783681441500047126584272997983797034838306276352477437250860425458886879860196937009009085552385154779003033697048537424592147758382927741405446457104449354149550839932184438754442889207290336137297525372848303611846122289330065998629861088403991326308571399686982782328688635994067547317089730789233767538412965038850162806916122623545064962259700640975303669266051204234287841687065254762277951105303282172799100059833993445768646851878766299879648994773184934689049158210178532664306402646309857601246688246084659587331682601721815617857299533490321603597336309236960543398597146932980173428143883467075096690127334913514254335726335011656976029180037942989901014700869846003510887360039187324551658140867973780225667116367933463424820061319781918519878562988871366812299443988404301417884936330508715464231217187498128060634210535169322409385397230967771629356194968194742345296400196565046632700146193582327079450234229232479814666126229316403103931666929960107691086250030526744657915671582466937832287874098679257911370971807649056080468055205492521175910792694583636851025583845271231092185604089912830277648368319342633714177903662826569403239482161144064716879826291132154046488223667603766824968019715577790334427512286436215058461015305495360925735830928597767229283295926056323724429818776851199460029831672645645078294143013167223331669816370644260803879014341703116044551355577320510307640048087639390598727332137276034940476366655925089382949921467167252097702144292035241616654623154664610382611889037311484575558363433112475419495659624874505718933396659967287002877063672344431027820203355833976564878940833164094296883134109857089615064091862527040930040657029685315136152294991567980001170120086975297909604414561906998105310555293948646887031539988885662368682419169655246087015838304900174634604598929723597857630730394515692114675812609492241137513005229911354730708746340278833135726766924007393955221197990972649496697832434964070181611975637851424026605373000243961521278736529506521049268821024429151656125258288870708210555552290555866417718471610704358195616903117968155944023816336824720379272876253683182412808585683583480393179439450940069353752367490274175886866085748002477579145432788938246234259890589786990268707555044541188689671834375068702277781994030381002702681454411965074565309674151584991047287706480958831679679037231407940814964839467348989523031586300188813377607419428003065775376918794696597877386851291914403778621757101289151456925247800481170437268836601499804465814981181183880036453494840557525023912065577390155993508480001586610537937140270402797839649663809095233854797996594986552139302561640736649554876745067852600605446501283172571775308168229841401739980861033656304773325958308901433177453131605453546591397783831180771597877868808803704043724068430422020535773137379194450685890136260536610470981650395124129453314498146893371770299348508296694885114313614329239180220466123802869688815345121014732464336001078140703500882068812629821141749471411042650363691981942555829206578810029702488030957348665516246324034642608614033333617702689161942122963756545154270560757589530629750199714463955083948267232997431408824340734997205250861159911228048323607506936852339967212360227961252795838553480587178339628980798981753331969614168789707904045683535231580183049453365196666589429687610863394628418290588457412507426577884953578503564171085064029039333578785029485916588098263361670997737639315930755686878675538633138436401715265576498068920892386583258247354925167341971506984799074530256308693679464185838776972658654356942099080248623964464189662611361170843286053927538575000396061873660094289022643788715869682937804363936559896095864014820404247413230627430470749394951497562428669014869404762058412078853560801171643933998588256157897770056470362623347979967325443122032558290430948400711682096019310687505774792437018307075616950086553218291941530557329738592612459325224918848975529011862753028990376100676395852779207278822720406396600206865834022480382696306021564897207638480707442301115960493361873457570180956200338903764745772136831651823774030701153420685618155152355777232537842683345209153785655954249623671405173663309696626779575502701775283966179709558869720232415510262407719384576701164319004973893293378327363897174856729785191761528261002438242866943975462678063831005885053372020271028215386057441954012727766081786204520823003436748583152904065000263250574637842693334364080967450355058193946797594784781343019644072237413146787453954144693275530613997885576561152917687131050317069180212736139483791421583256537528316141207206896991615910900681337502113321575621581101527195770185084120812013222426466397079610770922701557177746238908741781217893107788059478148268308852122920817943064882819731709007625052417404771699988699377888787159149408499336773597782669363083863473723256326616139236654591582727951805932733459829642418507539697464724899922145041795662878798274216106704768261859204628325258195336989638264636985718553902248161534032229210531407350808920707513680274363302467956811105580003186116165719691992722745405519451266696713306282088387806043049887740052109960353883956882613755304804774535525765532166188451431325395434698942457582616621464435612236715744428870524280193432642168096822824951475274938109926283062306614955749538384884487850626064813626682071054192009090821701836961174132402828472982992318044015596612393613196450651945446920308382747183664033928186799188671757535840518896015937876512811445332453849222513872758152268435029245986814043054508825409999400889992357427592799498683410718751652791431327831892577931523476149540129815543777633766367233662411975364930741617906252091379870285486490869797869449940924605927934069954614242230659890655161149233785801767754152097574310303057791547449326825171386411275923575575925400509009283830777077503063885302930637766011389365724388862042290627189776714076170679390556326829846883360968594431699267788971272459867908818173131664034255085783456973342766484169197313075964997406718183137574802684773197683014173548101723905350674670651197158069728706642920896569399459369722816268530155576326632019009214340832090712382498286017002574023114205013111936297733126949722118449537193467415181634300562316333590189213226992696738223665104702888195615208201311848472254481256808520679282105205393582044022655390862544377934624613118522697240778248493693579233393836807268727822796209890941503391719376131899388194105614518217080594733200443512275871912160230141054501860515976592317197882524190355264358014448673289697458777261781062583828771889856483882131464817667291666226563665421031678149954385538828419417330318914334358095797630231595764757707614544152106971367163249268538505836680112754710263850818741704909653416157563069022785013892856744771745504193846452896428424193308124242173493462284281091957311396516167660216054692993331624365626735750897020702799289042185756486323489945202647315157759758356668667370319381537512119268212818308881359721943043850289521022025292606718345056145059875679115558131362761223283735165584168392024346795991562310173844644625855237244340223173807985832672688281307487119883857183426727897998275048786375511207606774891992390087467580719042649976881095918806218537815865108141819919374963738764071351190109113697846069927414266233286589606822858871833066571014767813527634426176977045717909550815094836066919815210834692670126584721492537117861752238123390129809801954998604568458173076878590212986998209883870312057125966472789306091520706791688131055628042982930112058028046211839495375150413127090774800958789119483429190527782332478794904438274311092886873317673608622733975389786281678968564266465503676058302653622307217059403293449915357684050060406191217696663968214120922232401466139573597537732904783675463281022361570865656535649982096886330883718773055509087039052840503881252544163400428646683917746458707872616512704970993980438181288020151726616075401622821819786851490665709441422750743408937864245547833884076662912660287416292315807849297474643466973578980036240707857358158080872858434795639331383023752271831753745331567682085504040594728264724382080418170986861059472010553156938965474069144410704030795081103567150611853093820987329044156678369136430811968411716313731164173061564667633759372173745934807598660212236115117240549307047630105333432764424230899484726442788126791420336171089193906463787114462537092264668306363611938476155108498181508546634563546301317469980835941967048895928152220850108934693111485777228457716665863096124910128381497131184040888339285057354458975080276586998245117915243472658081546655653609327750081353687615623467862103131912571367204013788741068754164330184822824600778603486529053599865273532517587598225602464260300686271938647846667695337836704104526928391295065749716906003768363499290288829476753585538500040742049920593768110224422764706143122646844718327947726388543134314223892258050644176667351167901701960374421854907964125756978155990018976124858912770329030561274112468218094461999489142872715370108177255155090513379964031300561738076027900920397938439110204628149770030725713266449486932839358548993621520789856267815908566917928798825821867768230927760247546214078397845085575101350741585529391200562769679555307232411905096946781622941256866749155575068877742494649151396428618938474738105811881171651007845540478179059533895827373640702240980865219023964335841276246493840319378668328303773188408667416969441132857508269380240289626753174064456992339601777988694605182278766421308879060245490179367022185514904296492633438948301607118530018143663550419038368311726879191365276273442705668546975584078053274624591812544667042828189582343610717421176493355061110406202660466450678951139223642802859636792867334900459803583533563150167369614545177601310999770252755505066790864375735474720692740135525222729141522949803480616334128766863514138589406634830481347600271842979213101793945897776474058270183858757902491625455570937296682131816385839131753745373852971595894394683498969156037419084926643811523573930443271313609392551106719733116199778245508922366019262054279052341455448439237793254069002768828211993905313442368049116146667406020111318511558214974084859831020605492578100592865863868043665150520039763765145592598859973831566925866089501929320352322119906069968673920872076662729534573166149565031071144272795242220005076946726090191898088299674525782412115956111004738491797968970217934613711161135810246654142447491447423889952338166747357813942182602007510667913873352360627086580917915171995116388038805804479846767365169950093495245354408237307679455663708038842706847475949679938424187290859144498705012248438696866359850091491129742872059145042737630109230135459719953088265436374387915853067565145403312333424988561483116832589203506914158251753616121470699065939238281093504521591100753946113803977592960381302237458792833746997462641720567149149559646306619248042010181685459828081096982509747190317352871111274973217842458341839112385310120145075232824892196192595792597587970205987833010050020274624267408272897615929441343391780679268424676134597617430581745555397030049345507487050341310107841675174037885324939291553090228837739443723286033622204679889720139140608569659727160449507861934859882150584292929440284176944653462810825773028504225769742411172145881338933650092246222003529153602243452469573500548571309462148770190239678715103268653554076142232982691063984996019533563484693288119945672578243917129682440794782911498049401830156621599785466705544018262305822701838168802711411258338897038206969614343827806031173945551176233596866791429857255228042576072636790758310545102057380371441821046426104615330883571054805883409469136726387338391898392936397700876744127821397782609387702046271472670531793091745828456507307088206865266722089462752173302425864939107315009742313334443764378189343781958699538966073890865386987294066227456074472604488557856911571866997203668086061462564100437371270532416234963428301358945691841433404542623256782412863392240334148231753243279666756315508610445049887252984514976240583782501130394532000945986184944934816827332518702327647552992008628128749337697319886366384956658308469618139972479366560319734433278929791260609597267888875611529362968505930949562402908118905022450923529216433021062111090556956506055972384319657576510229299046498570959377040188120059664062120718826984134557171297713649487984115617195601768666013750662923779547148166812286607197445252962444362764888934297952677479193108981335540896904917124616349831361150860244495720057536984721289261271925583463360559369299800301976444397633978624007805963561541168430165565338470474746934348714504173810645321289724060466122276618017166262206455788289947277827347143069811126819405595617215816942117731733449469933218799312284495374879601680456309114174118324195568744241620057697713650100217230042775695068654920244048790606460491500532843688346948671891048471179765962674894109313914291326431277731369471370290704168566708724629858464117297223235287269507029457333984442618990283666101255836349099862926916424173902860830368548249445264597125159372986690419452663000901323428542184454610590642259590485782348344526276789881053044721415244401145293529767057204891828977638312747203856103038744487119855683814638227827284437872102120840663029980114654832053574030952123525978751625217183617814390038312455480093320844735637854221555970036953078560131681797536655213542412014556789795163566164247154274352414077435100158926370635099613299623112658205837414923215070339430740101557548620891511811137271249996422259579957698017194629858623789553619458493855539361007839796586847781543684812377287629098063213207455993014051162499423208561169143975969305939414235021340946248923655067433884876902642193404792276804454771180174596589413837234407914305513496688043408172759224461371460287183383705406608692001589583885930536530502188787784073013935703437519506137433124705818647403529495902811862189101946445487732394340987965172694501504566326810733183755921027743195615827669526342553236047964337217873247266144277216316312650306760481038277003265798857101115690371699644227661812806711343635376649885055361184916812296227381377164630461710485863898490143947350361930327231048165150747543362381118203469440903692437323563003265716035324443078728148944556034757086716288195089094651478914279618804457415551920297320648217856047459962278863097874786320759156791921565550948842421669274395129981935369763035123172616365782179743492523371522948847696520517445956945406765413523474439939838100406195771666813180002152786120011708343265675025789583826519380586364091914448960216016318543760741707920987895644879587838772248368742143288319613338064488668819105531018493577494234321146624051338370114371945194867515817670033394751173294413890539279884884395075176876590545844244886802578444883023680684438733696226151650415123238639749161204235110206195673570578991393101096437864966248586208513986521907114480335485598550379563032994411053191059029100606248525716008758410300920857960402733057142233843445133682564176352388003981355517675786776216870427900478626965915924143489089146660079523678367742025824335702995102085999334358188475899361950196379577164361887083694222928192851255926060167087467753160882563083754319002097732353193646439640395519143370325944737283012035478750395023284446660675072255503039129809607002805473658098397309894486311271608177448817356644783730458106914323592392029372819761646217398502004829114548947610628617727285979799392369356229471658264442703647520743859258429008170188960676421357767714644373279805225763074666714872784364548290319964157380350630215411894679732660373340182087605821682200009730418358923196360752169612308628133761155112769161304259618073935396913440226788766963829520002485374391458455839135852391960127205160987706143944028316604351292123197466351033361627035503672520381490783804986396318680026007420759679561599160135388184942768571647973859155768939319859121360360022755297610092459801197374347944200576228079470373318864666797303171808750105953785239658046700605898833089853423925331808110942768483959148107028256451761190828489197154713877605947203239740944282861780533621978829090735695913187960533470178252476379267346925118318464539572096502814050861060010202325599249526762688626614152943664641236033816029335730684267923750825120579033279229270904743003255381290257001441327469053010126240728447617449805770415215823253850118990695110668564814041401547531820807080221497417855710611158914132025419644073653919075770777508088436702983226970544548729803520329881469625037870168354862043277784800076106798811306397844921359234191787536412948529039551874879426152011649223473724145380493949163722417867088368535635977113740499109303571163429120304617939823997651424827177446056835783277400165851409652091344561522950646790803324184949553234329639797938140207056174963680922370408070420266505795808189810297078542738971790846703023628051495118107615475928077849249349641914627042276776562114525929436367577296681009002314570695508248866223818811999592034799855647497179424963425330344213559294626662899028643320151276273711117527648614455591367162294015438025965445850289843674684735623406706281981729269956205659557055830306936182664417792021612395359001601502145569698466631916844849710108367159099707591132096146098553124695818744766731194888086471471036316127913123475263452729063481202214302075882608596863714511726163860798775686768039225199328991332083852558461499671847655715802832177574823889295401122534638433700443362020476120551093945528171421169822044906939978307026361935841719690877828195546537015898628131796988825259670947513750324234012831264499555143046521934870287534897689162975824415877737834668566269867511386876006856599018038007684211139949685319397737507146162170410074611070586776434649968602562945429610972626136194526652209627654776996247218579568097410613226594127009502321809204471823337368900902820769936513698333648524634733327081896216028681223163177864570664975186585094278264526669227748191058267978069389971967981613815876019871123782320214853924765502689373574945492893774817213207366788061155872010310021771529096786469962326025983929919131154459111782555194676828141030861912177793821515630528057922465169417581906671561175771609918173843943013458675467132393794928002720967000172467722623658649810623488030236391249883323914945348495720841556780322235722662765770735516087130809377203911666611582018028513546822713220485884255390343439434666718190092919988572586259630568876230327778867023549595532312519576056961113306316483281406100215669912766847750744856602869820038620388409241356162966086771800821603161115252674283862118776933277173861660759183987275228374834153749852282444765814750595374893594428927217304719395770386163114922404876389538948414525627385293917563829665922588577739388529962241037935430113293462101539264280928831437290739313569153153494832541507179289144694975538531268643591392205138239175714793546587446665839913461637819854460135043987549805216545207936120707819239481201455162302608632843894990469233383706963975903731268467845308781734045337044170789005701268384225730538713824227587570171492731838801907673771003384360402390489690965903826311781684384097092721102751749239522977477557304831508363252357377882771368186861765213367054472718850501436081030636376053660067391335411575009720928977053205558121140618719181890199493375750377924139300836696004278164285965496628129993750606011581928552364625187520374927369336392319571711821739573984743990324015567357530264897110225993705507316884569970629662922859160269154634698733199563650247757795885388262416794592231294704161907336382842197230258194919082935730319532935936873547351776521214838856959109591933848165998679079839306619599186721007182097142121235076024343332719118587424427385250514443902529212411577701228172430026075221596528473298118894808582448231450533111391466448934916119068946756423615931459582352397897808483705845194126967162213419375532436379125863021865095092607758212167075044615634654954888654584714926778424888224345997097715410288682390631762154897469898210685886890514828472060314085146711767611166515069720581903520591781363008098723306394472896818910160525310212894499654771840016922406957115481400381167648892110942720954920398786103642508760628384795772287554767696753381853800981675787355443973043738047499199416016612197413657113006823295526352386080983422005142857558513646243861547995721272272611333070651016234348827357825336679821816722370926460961106356549361890707106755510784027169345525994057741207080243827930032595010973942958535390938768546109142189325839057774785525726160719651749013441919960725124149920840350719680969161577210543092905452123581929593848325267078986792960028459394894423182899767073453691220682417836764538473888333032348559417668787423563918586372402988346205973280383064818890468482364126339029474966159517275560897950312228793731677611145673464465714950615440428993088305605412943115936144267739309905198901090638271994198964036079097371046815545064534858909855849893977897052355517020696006074798431939983069005159530221117092884616741157929278373216951216739082704085165075088134045515086614640370299894781231280228163779041293102475227442100294995746113474435580070836717300548549957131175123392378956289022718913619011405939089760508539022818921781691794502660850744290818361012136903841488602280533290248341961846084929326616943356140218630251331612492967397832533563121832666870449063741750098548386420832351746261111659664742253346475486278752917933361089247816898794454534942513165466216850951838222895768183333554795670184444219648805385114362717896857411519216887062546164956897210475955948234797224817119398220025607676645674195373917194715561593133433882527676995676397857083375157891055618833868188077484613038232819116163206014471921366308067405123519791844778092177149179333978676968003283340640586061171555391872405100940855140416927146114718822726684169500328671569797831426064801273051566663423994459470084441814353285854654063365130308453947966108559120572034722507947824564603085516451530031421665446119755959146309323069305077251672021569653739446578484314773326827769510046035733990929316897581097623304491421495996692873132420372925521742651127700908261493384949445463424556559576824640596019948374086330020406715291378582209008433153765419287561582393946306081733402514053804555357767065627758089171724023013134400129566077145110816189724378921046170984283201620779815059662669374048463749428288183573048096142172279144108805096290720664427667419220524742535321375252508655868070543351675534614752198962389660381526333844658220351979018161781564633939995787118632218984773812510950578374210756203990680872738439766000775884275246823183567584484854837356840950901428042074032217195001521423993580414616809563116030360004229832624395729137982888710100503068944174987646755340523581405006973776678105417288817750436875550356831002083978070722984022494855154178881160245625892369349487475673686053779379321507735305257182269352961851491942012259910066609830036929282917659911261814223150021251856656676906679363579778228037952366767179518678356460338037337470508141675960855725631806871778041520033787782465236194346796099849065041424814997534136919211308396516671600523712250148275139010176562216061354139132073818388834997774373845523934722668446712657308447521071923528017452485581820648654976743395687947626667499726174560982953957697641558660775723968312016524377246827971086345627107897784191560573443742117914372842875917628755983996985607808827951125455333814947691195622526997283635815462472625379586769923991549694325681897063366777514862133411365321212516586588430697866239872328352212231383690256869779706971816796035233070826171845355099450611610107070168743934777142686470671831200319969279999632013010756085114144264480334625563595692024236244714218840241282346880051663919692029846170378092103155423566216435577438716897394746020565414358495144821119129354737596639756544563980952736870702646123343408786266684369630866384654336253015294010558576152807740177511331337226634084458586561619195212801679003978322321166134402030785523703223098060001306242815341632897066303234339812737756739846138696365741928474526131424458377994540056820791720989941036174796902107512998839076227151384604207768986133600668962366784494927410621638999281853742826764361814576297637095195227535589006978116456553872478362267112917145099985542073479980823133423021205916902889487610725170698702451050687204546731196816450570417543829085671264473015839616502011784108478295868181783853897265307666113657582230212243036882904181667996430872738884870580904692138521990319705806612227665097272687004932369347538640763811208875108349093095235686048722704298249688878599314014694111220376254611902846568457553381427838191272659863300556404308493675485843194819943920370863779342391028973194434586778513152696496736154712187386117145057531985317387073201084052140104719199971888331633502278598970982826175252892546278951022551859375849006035192142551952701099450885021198477542837263286354204759935461161427991044744697808433278763299932758721439908075927170225708369852864949387918282953161563237191039174495743220420603125193850953736255279384950467937571119029004439197682500898889367654472208485337178071009819393938825967375288923029918791117294954815770926943130575691884126552622924322560098594165682872016888145585907629422626307955663499852291545707789211338076763578009963546483081013375638903254772251357068826478501095774830399410231337810000300940889079024506049546247756169181843256393222147958035467593229178658613517651869533399178469833251659111920064427984193986090152245505142122180793110111249485488701320586168531643880716645392062720200393905671849073360365273191032028756535310061304768124872048983260596234107037248056698792600775513128191380230758066530314912867926660349683698961641222947984039104649837882825160019216904459843050711203420104265830291735093757593532770835608496003963634338956798152459901198990984983942671308032059655926621438609111460200882301968752485929479760561424113091040151391681116160158247912893522208109989079931953829698120825922540314340331467641004508296123392405393399919091487341410834389500626024663868240585936518081287861321130746992908866500968876727166062999401771141269457158775091045177962171817310620228697587028141651770349797730856385301253330729331730783961472369696945618803270051795230297359937582585666507437799339738075846991151183528984538834704722982602425420722213883796094555855341011453431368285720190190132353350535412967431326611876472543267237351135753142178178294225643441613248016454278241389350546056990238966488985496637020998516025916370133804302775067773406369745470283428739909745890665713371709272188581764196871772591029847067027043760670896944845775145509198539582711375310333349129069715836317602730698103880300810417307781597102550303112401757358667392114419891231185700492289311714059331450975603253919095528589839669561881895366058177496299653162620467422471578132857045039059529242396251824128678333126590104556375082177118306244462663551432276517578868428721732580802627437097371422361483949045359401303905303333077443009076852100372067625683530198568398834153458507452987990794351786731195809688406341260965325400738912255836370753652681083907710301433365473993401964320096195630107015576523279240310858885361092157013464694694788714800770896127841869243457562727750331755602890716614827972162014069534659948409622638247094020679406466580491492120799809812529139547474641492451736984155135944278358989524953033014133553488720949796675195609234979583971186000976912309190838572115726544925796963027474211447932165839047692290803698747429242113578197428311147180021351747039985061865514845916953584684147241065196689812329605416199894800227988422775735661160645334878031302659194954364761218717836454491142975560814097476043790736513332113159075998522673765650223278345114374555650131118372869704306315194794386879078408558913529294696928238339994046740386235432208967678608546734371136504761484955946137355986824949970966966617519701700291063866330609585187008531480357626173593749421772561468566603135408659840107958535060668467796617242204746402370657324896157413300009065000784091536798818286169769589951522804046924421611154053595048254000296373623111470158428773816149324599339906489445615754851504757107569791123323975117689673358809476676547559760457424137217105744408305316049550402496421531926771633394606705452300125136277271409568624699626148221804485298457524964233834145674998161601249271033521725491726640296209618593092183169577425287105804159411959112454521880954272724315842008892116172948582924396243246559904358634482065315916138421984286943115510197312333688195959930789813341409700856917629965189355517169538349273761119010315600318734923857328317510867484980026004698345460653006588627759829017343389056587679310395695928811716448819752905423053924911527282661509882189743656437877951089954998461165689568275247727501075711533536475937663771082552351977611614566412861523407361613833922051876778535849422388486373766229842996997601931973020779813974417549815692414831969710598215479593907384809430550523507605656876742645116758514190977227004980558063826378854152047977104231497886327447792622497518417493038555747842839194803389055728366934794281468118819434497384113580977996327504154427103488078280513374043384902049534404727066576421042506672891694609803078493221838578268210049255641351707631142242588628473015652094604290549105056170736785671441682167205692549592844479570136205853875273730739768066195799041681738442981836989313074132558533541813781034305973025808766466182274440937196227442496255863668877544721223630557952804762661352547382843308395482693098101519475040339618695146118271879854626213818791425480145609572503112650771634660280186854293431065063365484786222837003523134673109761724930426110537167488513743103708355704411599574893908589138278592043492633629628094966491913202406295982361188716818082146064604678420806142493957502289594431353941409466220898837826898091652187079036126636704271794294517011066217182415606258374962605817612654120638190048115275040212168115060386574425419902945004571183861831643284796046152413232674832264488464033564511815914708343048321021499280489722044773326956200658823934487773763233996639214261686486903074861117333709461697335549923675625162805423081371309944581799203203439626236650661174114956413793513000992501923143266326349318264654284572672830159652131360732988081227648248281158163389485194036882975352150503972461305597465179371580403091267644753319659584051879865679140784885363152249791050984140351288561897429562344970339508485298243848661962593033136898112723298461820502070300448439584935887851189248299038396611330589979979895118864286526691642754509973307868968522622636369423430859700546593797894412350351403115363536084715383617272546948188670287031540581329536348093167318186235545448806366183855767868516241552926128732812563371574200327454558665386222140974253034699738477106073397431790126526308309070144058249103936638188588246746386730989596506015584052375121992459343689981842916966424061614307517616630237409183517798318620598366129743806395224524217170464167053961329403035297724128134005193709279559720471162312823519586174407236239816876148415489118134584901830406728876126593649503257997208967350793072162173622342415937005592922859841650180771186944358082068092628780387710137423284676621955168264876518278539926814173046847566741751813287983385310274152741677644247694932249170426672090951339546804692716813534970648984210547756790441545710168742739275788765654958862795626199005047530356190057117750453911404977953563897074062047548789785425035016790100398329102472094996614801962923154839744394898320013296747848523505901654565821227307059836924422583662490312436638102508365808322932282604948615791817206247531781232653537133842112226886972364448712819584840786817373688558099889281297705226054594420745002777036646231962348933303215392364830460225755494843009413567825935642940699736696860825765009500471296060107646081621468436372787828787654797779437290747328062174697473645602354631012194881175306221582114799216957733285453778792333860193295845286598549344210716451368636514010673171788317652562078541555417827774247445754000864603772336257236353129176226895819402947664186601069431784234688579550398221308186428573778522243834356553781433027883988827583498576969279831062402647935213820905993261311018307311564014703661483175340817167107267781812270994771789447707891326962898381475043513769827581133338224407943855221493739874271297616806947998813661730931376508947844833607989009884473547425430251886836726143811340114617323011138285456831607054422007629090115920429499922297993017676353880406916169229546473472962487944220054451305185882090729097946117194876095667433531180956182167304578418061001491006338013053019726164366290455142859600187585522925111107769844351924941638126833165053289484865326922735550381530254978400101015618888350096303488361035540635787583884715597613295609720225242117175447394455989740622348327814290851747891009563140118494848531145077977146770280252896991904563602912472949949139265887950226712423650547665858579369591270467049294922636733715415701591510162042202929647894556695758245065970839060027351545609614603033275395284188156435225279452706438788079511780947779304024972459879524825162207131780594049618089674911698238799130994949914242085224036002401827244713033244567432596624695339832441547214153908120874589283321905993577579463731274606160469369457976010841223715424337649615738512448970543411307801414236774292974310307964230839649711637668665434722621542053672875624470702445282873978570666227444137199243001293984915191792366018533206218784316173467205569893470948272781177019259396894785752073997786007217648600585775614111279947645911012103990872036069242908584212551708228010804032055182836869494477320968128907874065365066875582725241057166034479185180082584982007398155216042708125757058787190260784322189193722996443977837206284544647281991430874025351112686870013975354089686120264190014751927993040765704582400885181903179771302796333741448095225441701690196673898399983900376374259555946527335967694099144005126988438005840446480295802902975308875986933259653107527148243198774162785215209964774003030121280571191095359623668032859347822098797793838806624198750295044428652749556522788406752677826720146188794193227159697149393975290227182025714593643419100795792607402278875178233712703100716167974189397136258703362054042569912341312446967513821639985772334908683245717107945051313485249040632171819369719371415671978045421997586749592653068754653347739887124375551044354029090198100861634929875920744661994243420235987485837267185718524519490215542324276668746705861850378887255643552045924588548038214147714876347853518639696820906713440448774095907011175079385810438918336944779058709163051181613399887248468237078900104511710257633342973494698476077968902562536012318449337902982907549464476533570155123508147592938803835300781873407854643218464481565811879545123965092645431402593900297921391853197806938687247963555961502399165109995236758936084258501119804913630013780049218230254805616683699613793287220803042614947050915037664406168505378378955038540110910037573975623832904555614145610095007871608208071813529910063196481177573487773839698540264754013633334286475748285711911641484282308501872880319112971244994773909834322152903861070733085919291792482998741877635999121386085582217828997303839941335901425878009427542253716878028862697918283208811128826890254206364650705117864482812124453148885403973918490875423324451396220102415592107824516497234991605146175887304088778788776570475465254769385336657990939542001589146075393042150786497719827311436026314921434184128154954877068552878855642001461464979764847048988344650236244698505082765439848770131975445227098290678384779733284481241684509319896891392162671125902350727192476755113877303501013478762949000222543518604284592940502074511837144841038548585735959526083169377620868070172235756155955140348722013719720821654113816832008585838793972644634522498763201124072105172060463156798674068140861299359790128499815374998460814815697326714645930193264486101939501839532870882889453069079472503285879397605211682543839629490366070087369922539092167109592905775654602300388011621798419285768861455653933782657848956065307022490092559827361790638387574575773249273290224122683070881983020827405522983235912623987773077697458517687446940929501402683501253230679546996917382133927751164220334762674351873731186861655298229204233762703346139564426547723771223534955473868532080910851066722095723839196855552520713064180016811445736592992048817307693183592213465474888442533096663649584111459294498714371177168376416218628543343470217876047502548296664259507226599894459840671889492478425190428810368516264428588474437823144173419642309890433190994449094182758283458903166314378351856175642565929472715336258652079944940506438957738432225949686818529884369539708584167202738110828585167504501579134326497706110696010935531245871149965878031090563480859236253640487056857245665809482949557300171443110499146261222599567663209513521652883635667674133673512275296915689928996599225674018141946510393832532158514281680583726250677318227129337828173520302717510050692366544085343713665104208696920525877276546203711839214102306441018896700731173366463695427190941044369055866041947835245690138901716136082517654977858752520785028765380572751880843227326587736230113272012305825520354160184881279824912587741380209104264351725433643373850806182049670517043228958143058484808816817801410747527564982157288660202881929718979680526414183600665681945279876514158927831706530706163963987368496945455884577621873685480562235629901223719328613718806497738660250175411933665128761166476780347362927796036252714495825419915732919999177448638338443485921767293781496398460183564157226836898374548727496840126599114093300079223960283057694237607712345122348629112771430249421190769588162307605754689724530459251921001304132713685416351954647800465668154796221178995654325454588824886856315928279764948500081009867737873683939629354352070798292897079991835285315121537855595629339582638966753342136882024319395665159684411065094112690863140587363272828868130082895251902833313464262420949894785786494125209387710642133436259865654710572712215742181578147507265576881990558660756448933519025942718319706871643034252566418052947933992442419831259873437345340769900169973617491634438208025528780706470656959852310486855958469562825882055465301011315277158553125575722407259369248997890733431892369044829025811613520885131186974521074902192286914497440840807598752078843540119519373684703618552758546965734702550677985827304847531399368530136409109265819993887346184751456159155253500754362072944950174699464591367110461271804395608205111973687548382581975672025056487256695364080212593121077696870077805595263046595321418946511642648429509300403804145714584636212097928824924220166264383896639654273290640700667571572968228470464649170171992664187072874395485795910405610361780955919848922407988779667666966096000835759690005124839111537205389817941419001856726748320737167905469577383883638206799467191936117620871570146287430270396312524417447641650376743363722221365605844478622142421066322271615111196629677771364135983895818034928697905983459467178514532098088294025155621425677254254977753114614250896823267731079143521800216690910419186068153103075614043021593766406005626697652701154427187402064023246124531656366856574041888572616048869647108192618025276570196688605408373870217729416520235302034044218470684476114512895517866144591237548641064778829727285359891728426965913818889145230284598755084388610307298539332254212948841625767232124114623607357096832111355699513791213505665657070442881043963660913127771616618463469453893074528901919777973507892649998439484252725315746242016181554289098263967656789898593622075911463671314555015998973115489225378845141937782525874687596992338415269908999754084053952018334713037134064799778078824504864412430529040379056232674831477747217025138617475524868434443376119147603897705111817986058700141893352199245557391948632416331948736112150510754697118704529630411184625869607050991810953877477684621883722405771238043919152378651559565594597847832948088296962980474350498972580131971376118425129596817833762846444963991653071287039598547659855410100702668623486981091772835725454119739980320436407779136202818850118177312196499855774046332552802617523332588067051963168439485870983962996075034003509414846138416696199032317444092085657273958824864949330296953992913172215789964901373184553232546574801234154568924828426720915396391834676503404575989921162781381452861029514304270815647380253316397101293441466480160103464094327539856885805475228446239247634370641524313174200700658547105503648136942327124666987875813274501701170951034253719003904479243321132067433546779294062835726961965901816558480247601079584641642937036298127303446651052471881134347091269350578043316279142052697753572692993193934151988167570142327953526144753502300497304345498232658689738978432530332803354608236824407932786364162763835431006871285440473532571333050464390934018953300198804200476397028525764488678941282870638355512081569721549620526940310594633095009612015100633673877646458899317964970037476606457603360440029949426544347184532827188433641702916274299059042360921211938137664425235835159645514720414090035484695549223679834032937760663468649755535155138846068888262029331532516966810544872960154713326570341204522491224959487568380839923856470361714686391904466423968918427558210035708128338620251298771638171053869728947251661184519424644232897890240975133227628339563065016211622568339698273846839302970930733009656073717753890851511078181970341353492936564344533043720732835542461166140858308579696039735880990881025116916504017970202973755888543636888787517007648011981979434149512504529487947603024489955047836400686947190321121980607918078747062051259454696356058251080414733485165633768881083452381585204571358845198135974984347109993922284610912790956759868262687275155844815855222121210445936096637669885325488448198191219196580564617201266402132255379735698240959968601364936837365301601273903953238565245715063690512395329372408266583232925473768025945192450179478964202400050059480781822669060165335793109382439508696285193217427911976538721626081132475947469992220689037541927729974769023218231083892026834337462234514995060172934082185163093023131085604816763211740125521811743620305222752089652793859101591634959074652190061534964083630408716448484343605036217817748300586680338536639607462924750389861627301151868445248295216238301772767874346899166377452862179662254198695667710879447700198318312075510731349968313330349806592330314327093041152183875695176447879854656989554752024969752340282955386009875687976426652591183142960711706291904089671057340922591623915063029041747472895253555865331516643041429463998961217190740707995899550379352557669012092643540334000669802060237145257859837950773986384463075220251136327425671092556599583899674411955799220209208247326448670879107357899391650703687040910353752420847297325195062036323328489617460642221356794710590160814906105188247530576455162284292756140852572518981001259722324997849996289052245397011608277913170975739523597614343227715175615061864814032523149149185550207506724315253615334318552100491853860261266633314344747254727340319569989712770012861331131277972909482794519163725839738186950171288438905759739189674116425659035158005737092036942814151569121499266776447391556380680073207888732661697189119989481037342068766055891254128611494733387128249182098195641368390697219230286301209768925267662059108087974904246843638012237912507596902434012396107007243926549340051063336207753035346419601673504326411039076901911973631319333726850461438550328706328377883257082607451737628414637040492299730659233780469575873031759698895070807443487476226599311881127202248877791244528314371990073142810901683863019801936628888650905380853852706487481580266337100552517242545694024262113618190663124081395893018496735898434692665228911080252356173458829673352738833076524048419765694333224804628486950254129897850802625662727722390868251671660471690685140195080560511565403270856039163369306454507558324778068293609641135274509456024466599415535345323549069266721836548628436972730347107680715260546233287855773033838718027551139256486777408487170809174759873875683543522592840337201233082223211474122393017249176890559668530042145802646149861628540944036115746973363259221982905937432850882223995574370473436438512824947806545824349380641160990968599779310766118161887326476142030397389856061747247319880965722038156991691177736678895642817212415614769239299511488465539291169420628301576165447611017813694742678455245632166863856701837835748381652804187866810603964261239588124594619305276508472853904250823220023343551843658224763442563867707706697965207718806891089033084616998638892226742032375334885531822936556134495946983411394367344384426326745316257992612058426253248465792993026642592212839544652596482157032619906804248922831508498234061258770303128558507128052573350036238852447605187913249139299016670521134812365746971157468732036735108227295235234027903422641400622081402716682030364856347379301279829620426923391196392417028414752789980330434064720926474581617002897496800469063880296420495197197548884336654755303430077885289241971731961911244203054079028868933121067163841062910136393724355991846375718179083453354890415340957206595676271570470495339546678727749420743165396041998205936205754728710973584455204534115222512566618749838340118302089342786092187340762069063778685264771994902685265614036404787101429825224501471870847091841248333830987512739779480547923818625078549488056648903485826825794488910162541353800520202711184184727356353865541189764934033871479948255474243716547927046415226675418001581822075328583869992204253843580185631947799143678687013656272128708909793761275947285495728691070482301451111962668177639184172703541359450936011750050486263281620223358875014154198391331795425781100482914333724350477975608597864368079042930092267978171678800598633257537855045767187429652256303745059541509094323972967582187785645967881571586887031107544741728917160966381482691596163411684172456992902664651193634527056031193945092818065423576155439487185132042103252799380812765821122903546629573937563621776581342872017075921457054569849171669644602583629956096733643259225450350357490369110610798904162876803831651858165543814646261938080937988317856976560664188016543760145547359239250585007796512826171007636834980703560255656125121927500861581372894945272430435181210984523971493002665331505800891673915850608264819855683035643577031234688970317749892047460559236795389933647232984289768396570002576681353120577582650150715851880491764935587801712636487864813252346369978469962367999009430384966954667223177069552113285283124135188262985543245521566089941575847600114110993285651114815152874742827948241658474803288487136571178018776177897759447360559308219682998490834566263460970544191013191507899193692476791817805565320440243514538515993540124846054529283407594177689479525249227719031706128213155535976656639091206101850184760463159299639272582804293122861429896343993814373947591749936368445816130164718921664886370351690863227546905659413556998054744793068879873649784591848674056870253835635731720139443445292935046430631537244566091849941558480148789278922253451546257960365320808024637257266973463373931083749064387808304430146633980979458785323784827854152188804816172812668589367031481103003204783463882990747216813186590658349902824408953257563732633229348286504427856224902750790513914559707840957929622529545717063130287161672973348569621396016562958516399364292423189550149077633927124722760685214188900738225511299109383211761908249684339270807777687815745293098590299389225479313475254927057332478634045198706073921238290596016377801907794811536041969962038415441652312419254622096114296671713304726102666386089352390024338279510884544239878441114427924716586469237972445722378336739361853475083000590766480605538709545706993459991179128306639528790007696438222994378763162053800660870248418042815900007388583753841265766664590928671702214317784421530404564314861943396767309103935597530858015651483409652193734290380955064990697038944216728207792162488992826872491895762492190485154511959091355027948575839972585226988920296274877780058457983744110334382206868954995453968441265509791126186380185428003611896673644401481156984717620135276112474912487479545287239395038077914949698621414211326347317876600733596726559022172639211984670143339884301342537934254130187783142146334995954735637045499763783489197990520138094958448017845666598043854061125365045284410452585419552275189509194342831744756335309495685150429904718523651102704587411606237142770203712196016700985447106496342028353983960039697743591196273490571168602866826630724636599877990844634653944808368740229070488728058407390726317185570494792889543598851418721007006143721448147429326943724615872009667830524519687446958411039872145085105200342448697779521757586901031495108386181382502577369898102823341230993567863987903442869735383697073908730340584049005382315941616377941121556439360779956569628390530794012915890216920631226053072850287302566009878828826730590300566385926474974490472235817592953969450546828423194203781692711948360968611261354429463712078787951503275009360202105125621510295572407753243994814291249530505176073527415695652804344071269190028075830907946614429222942363252380896822150904450640635202474359281205419647860888127132161316248949892687650847635623207154108999697036384198107310191697461825772505492551196963255018915499971626158905638094148422125494809483431996660882059516340516091946429695227106019345697545859671771146148191400469940701416949463900309388587789230550285682518513727841225321617508745518972054496850821882001250969682558514836243142961940212705390049392275256097454500574190973278913984484168575917732515258200331338181751379287381975643502847550878868488361710629281018412233932956908382457665686542582410255953090421226519679047232408994781248348206930585006505963296609426152330850188674533044212090298330007723749967772316562041057641860525716892042384584026096251484282471419406093727335355732520274466651061395278848332051602540251436282091748398052055913853726607680584167881502617295105598989050019245570234146229005764472598022016304593699589533689462080569248918919613640163069396244738416830214389399201792516067969886440043326510355437239602109222766312070599722271836444154400471711025010478092206522470703785060196837663632997789218906290333302392873195324373982316847611586115023167274578622593654121344900332233016570838191679959033485897631837945051013374269359517579710722801497164802064794862717805888034475477887052145395217440380815904427992730857971815025581594828889183734126405356016856219354046381002497156410451691801454551775590261215871581952010629568240978921729443592912397100288827713727708518571534562299113586405741406998267246013870267383225748007396422069128359249063606600487691860205367256281526625910858739363836460547175119767839380101589231278795645893278664532178559886444378354176361267847768733625327802869615376924503152905120363854942646228101497364669904724164298222327270826013212310759284398250059645887416787867114816917106327259902230809760134912114488146617421557414183972086741725470438886585683384350761628430783059602474957365097126756019140805107532861804555585511459714428758776183423046037727545441244421162429327673947371279688398827873434447731818742159729487609275054127107157598033507663385118361242243307979092942728384427460541633811880340064672957172570830331933772517727183501850016036965436686364014978494707103835072518409536372193013434360108482050850983077932225669857383613985898783688968839734226499170907256917468893053023625053009518872438136017986964147744789604565236119987022875560113879280498458101038759471268528008315142436679308663198242751937168357774978327078634888986207399493468772482668231017478225269784066602041670733818377601380182426769133535885124664470453723276881085338745586514116590307901383259566034169939150362979272476651298284981179969141358488129529230633873422492878079373338811386806336853634444427972125133349708032968964129031525664421279024451442227411384140102467391237805082292970390180459456684906545363512216948313987912699628506178039632387048121645419004477312418223349979795698953292202187749922807903700392738593261472220923840241916954162561338721423310624665498490095757245264208493961188125565192737537578805569160665848601855800847574380764416207113828435909515649833314271228865251303324187614579822798311322619267957939571668313335130064830853978018794900357455003854674053320513128530530215585701192694862334288363788564486068192889514451464926162963471287921519028520503061027421828889541773334812547681969990044672149444959237882541112497698625419170608111843248980056622082277860519831198229072035951811345219624668867098291936551896000522727693127866345084108304168003510095832072185599546723622476477107127527940627075087031841316256650522003319435892039993042608212980153047260973331503693699559130744014065063749508566641570196577302573588779076092560804319341674171291933688244184701907951214103437903790952154861531876959774156512362089007422693102283342374818252908511997004303468794556136233806726554791316487427330557937168540787441246464763842685177148472422820101211651420356709739656748257127225755782039607449153741052595709138613284912446444910351616016239285720858350198992850944095406751347227320663933748591930316616387288148706070877133801703259523394068737614950386342394889260857595088240660297402389825808733660415323959110552896204344018644881365793536833123274355494912806640216990138454906372775623740674545008117617799506647545135127471676683787191795838640043421880607201296028963871281620455461167317155740950301018821612458370006585301983050123897101404633932540205223833687294852718867837267224128956803192964603312086052611999855376954310724239062116261573721903566839090737494602742698380201992895041949487713436851925083954721503655730184487310653535470905211787235021126260120898109927476117471819557052540872570243018310489002188448106325666987554677820052114388194717347058438536791382191833516862919554293973098940619150814002039645588814271173659517147803921797531310636425040642931878622675720185627036540667451217890599957525411357605740211420983885899546600285257761798815468636730861874366029471787614394577659111679855888194711130712209268954645264884962734756457677299411939781345277499568700113719127731802577358507706266752068256590015074119376655617725322309608585728649225169382458613062993413105989784634030266230154858693051244309794217888995407654214824697366243369335228083100179818265026685839796965783238928881337496173294969239296343199049734945682620808590886056865235552678592433255286215855995618969221421849597731239564226442569008500346121785348118895991502294073058690192075990364015898285335617579038805283920674538552874490458267725092711260134269003411323306156316801618147381188320130464079280130847595364675208753200673843410748682020203817568197542093271008413642901395207452119558178313529172606047789867177927154624993345410842278523841355107808818916930249620465387578132952459354235629957478955946935666844795864467013155110604445339081787954059766041793310273014915172119074840887967342443808323467552377421389970310801703141972349042927535761506623025895965917472630113025164923468709263361775856079520707136905859995145020733445827331357460208524848307720945862714047291173931653985639651383095087976803943323418986719367551667678506200805817703306715551458092623159143048272492401379342868565515662451643437836971735081961334382998567755174096374483463272312382255874465742611578948731768012611184978008757315714249672145904149856988984575714164648098838605458327700284332370423541626585443613704540061309484314082242910837012305276414324156830925950868302895288335283867291679373759538029026940803632737588800158503414913542886075967085499929938668065977521228984737546680590832053138728639946026770341224899659987400659933350382851437168845007909137524708736887866894091233396061548015630967879444638434118471137363393131799071477934222094475125606145354549787243173510880358435757359116735911329085316212101130128788143693614786799360706177039837744247343715759939599611112003529375721160807472364742713548827935090443693640084307371179705477923897271672671460033658027724810840132022837106426039345524451877816983280272232958548034488364202108459188308550823162181278629970248660178379117630173624089546666705516407907569143743371668549854318325636086205795726451567635891311227521209716346856969337681487854366753133868824279907119098364679875976251202974906111268348708365329730279065842739345065080097553325507778651598707629628603560854705970376505148687817036456094570197239098583112953854678474098242700735657921596322876796171474387192284304961454104245602869697073269479834850860308209218706051855813505262485825072462005455904025436689755579613574534534127645845090881459011886733583653888263694573621800490401790208797979264009723487362265887742566294237679542951036000664300242412033358533853763876491019752751935208742656499884528278219505122222382789267427102501986497379156970877064267123511725448856229177907834501093917123055454320063790546481879903137095351222193095677344653571126898563033663109147874261806642226770987334355819666510459178509789580759429124674434381549054134526675042991437140846599544010099304136421758788722930433273728897457669512385814831660024244548578166523869253106425227801141573914092064487298479422884244303042394147384759591355081812195134529872629362877993683272847689477090585710060994729249668110449740900918937154621897975925586586114285339071200812997522852506771062409177537308785621485889803682805708736396603484397766907518174339618776325455318976956081916449226786834589787213225929703132920269362679923988336234434410236442602653998900059334404640100061930508997014518699808760240910241992226507898690090935040237780378868712197150252069629146987085140231519753098792036432989928913607240990929416772113993813444825166595209041177421480835075763036346275758128316217752325511670248308053127987956190771395669063179001174984228444669940919485498690523752769146429967279687706272923094335659238038851143501845870715821187807725091287603660849166228052517039428998257711396528098806897010240404026525854246770583563327581830046470567958245836011665498955509736776211908089747650706671399109205767052722918442128496455349380529956845244584620197704502005458090955679514489835398642494207245452350690267310678453810613316146804654562969306412124641757853314401034339791458928585430802097619980585777706308038084847983792022658116764201427356180764394236591969502375566948626026434755045998618259524373094261873172967618444393042434465866645133380369867149228610447101252990774342370461045340716461249341238452324861377560557682957249943282445924141747842140525033835952360299122737735301463559426846988700854501794130916018901962869305276579603404023971431711190225056856138432183424674449335643813283079948959515644894400794025557109649507937008385816133310170584660513019661343333375188549189053027462154247800537135890306945669456463634847599125519091930545955072582009540508772415646050203439256959183340782000346959789462969104197464527688529545269336371675936328270078034515549877052433241313666743907534980409262050661561326242900044910255788477699259814030612991066439209446051975686771715761787336543050148593881237902399977077653254972443343468247467044712379828765814307785718339184832495174998001594951446530422270738450645999736134427934897425766747764141868551533534051790114697636776620824022090151152347383401568460687737403948281765212791165697034612808920247374940542564309117112706553122276180161828957427198707941688555668341567644132163116448835120238421497026084433605513902224354061922450177832322450031074721492929103207208116906459278902851008370397961977256720897589398127890469287484057272324013610687903004515815601248509982635653740726690101768825415271268928913257516628934769791969252446037858790884140696733103910811718119311026079470220242614526351565028467518967074493990513185124427978692844547691629155539160190742547606711880436503965942932464589991732215480289165664636585836382828369402188553726187088959448198795352029770853295463121912983856152047096983500131448616045369509738218838242010823109619716243037454309379474555027391522981969636981869818620225699575664174781512123289943850811175850615509001717434649886240387468834091876535191841423712693889935938872087417165082392685076484559762288697791023778694515910451679483838257154414269532301062568860517184020178481829707082966216200758395490694184004646740845829536789825236368434378057758193602147882894083167348399544471855377037361315020443203278431355089669567734285737384445174468637408081081484707778758828869245593128905561030593837287998737167041987929413143210049123664958257228668915458620345396238427198799719894079165883076470118087577912469053937849733799054861785994805556740671679575254316498826980601514793738440880064670171184121055603799881704334791042910440187899668630173677277445109194565737723156410611626925768515307278265701130452161655695906976613360319125783076534416090370479064080447470216795644840586694504287937026139700319455932821977635897919874176808411511799396544398477751581751305995049180917932914314734525063845328058492510772787311037930575670622627253429242637666481049041459391682739165192476464494186350873362272584721880549410030606723227719754840742841726761113024073342297967773180296260159105882217080242563097285127358890840200905762511883147840689802885588450799488733932079923400134974872022971862370353917305275013956880344291401655768026625754262590439463903398309254594946483782550541660202880507477547852003416688455093085565228370738565699052355492775231915508481015419393412193835553475469670765871463908838621974608128738248767821231275892470702811200168351941981180122908091629855494193613869350000505500277744839709809297258407580732697789901054758113959746093385087916090520628908536306044779890304702657094521747742476784581931433719517003919407539259211955907595170642116546530560582321575156158892905351886972651167062829360028338285630545409891163666337334703386837724254940356650748706454906134205484128209532849496648323224296156431372978034389384342117376520657548509159746407050776929301248316255401594737728454812485413429416598111794130804557988822896694965472636030028473529604298287056069429060784367510150674205914106360398339847535023093755943994337479735466992850788692114020766354386839595703250191482927852225846659658283581086245300810358340865867845785210384004763723214449347881099189873056919782128019584162826858721743058092544202053516835802504894316436359915606036445516367554780642494169150824330386468452562029943625431784349756341732404781761064508808803437288623079780787952095060888664621830625952373740920332146117182854839958902791959877844438199017980131710783063075689767258954003680712741463217596163183810794652362350184055798318189100631471959340933393992961461379386515207541384338180604917922889831076876491669766195746581219239152484329692572602900598516368213580992876211933572697991736489981572182690490923440736430638955330200033729484697370760485464147035530670848584224005281836180766601965933449105253960771654296339038811606781478007548390086051496880238841837772799201785713826371127067357872084854529186239766800436565515249002437306978015971723769192242189190778274293603610708475635215138671900139359436154300388852946027506476647304579776963525914261005426546279417582436011811592120908686135997132250872343641058499352643273821777715331678224974705232643568909445870653877742084864807340313482629895927855851783158629974960854064377419854630250658836592085968001287213167991596737479881077259888012418581401813112790097007587034456490297777700961636028554202733656655732034299123686153633687045219726751842296075021886323935152233610986355835112130247949152474726252459834835736130488357081918069641452648214256216764202729518199178034443035036604186339868925880607439195302064524492183867287909542601896515249055082593963398292266382499424183736150262830133202449153278414496192880696929543470596753102702411256540230666720459703147562048555579608255684965523261479447486040200061680984400082416499400103721056910946537663425318670577911398241618532473133645671407634757403223089576715292232984832538099970796366891288899501821481787251247774897334878103834324529850627269328769255017341072719285000184326249141721219510867295819218461067171857504587794889608645267253248729700172609165002263865881164897373354290423754709807126375171222789878680559971669350997144835191738538308475459611676511974636251828174377767581982596986523184892260940411465989814587697986464283945311510959157196160583001334514323192958557921791208097896613610955222049234603556868857213341727322737058623463566290477374514145186734209507317322964055892085683219242265294442876436814455238798870659731372346944266473321037123707896211291328805603587598043627089732922356624115075106051870694812844008163784486475677722514279263565589384729164804411883153530943690732160479798519781314863615349805636064658924647600986302673242855403668969385323668658074352593009117994912181625093819669966903534372889798512123281922499812405847220226690119921171848133846830342252388534345396614492816711840818687705690847037446447583129615181604419268870397249104277838853177989498860821313604545368372861538265231231576223695164279899033971684607677524550221600340440480707158452915820261010598647576336742464904858498147809347972520376455366489795938771265733351025136257854766528416272401699630294034779802089610612775667024458085549219194539933242344848014600015727969145811521385858540775166230102406866274777750981690178845474611846013464079775747124925670979708113336287004210092477584725793822884996225377836848048240373701671024504404784912849388483489189516746496306305477871576793917759127233754376492351707277626347332245026036386088556414508418889166353336796542396352605518606191292947539886918173039647973233593196994086790071850009818678956227790324416099546860439283557644867255682250155850417539808669278326050799944594060986907802296259755665304054123554507174676047738395828403608455793325575752788329502045834275792830769442078415013803864953557441714320600540768634385896826927265198076001489567975282887849308538797207144734180447517565384634796304905689588151597891549278711018463184244643543970590853825309166113073593006774820196597709644188006369855224349731469537870363701875216566712099000208067887210447962971299951081615488400531620041972087604209731776388511187370095071796536948456788345218920588407507247461106559034418215961887013895689732886691762021521054789747163716629619555478172778889093401561188979439410759539677810660843629120514314030985760301575202020630585438533046478625178504317171050581731159460658938467551043157441220255196876541776711539017227814207188986960962116472655729248622580718175534047489635136776237310920735760407021155326264397490206896104876748952703684176430790039658470802485629564542581136555030434604712612231600166892394192302438404188704122318392148632560078559725412125207558935540939837727872828698580034616225879444461263203487170099919365011975616792014027202852709717096564937639363183801971889290702069119148636495594638914884015426880904979831731048985836712861497259530017333138860209615736337653359443893450243687920114545883455258060827498368906267044106044270845008164351480350691453945485969363683042592284850426571577033388453782134181331077126499896372927471332450110910055296926611529157556592479479060802177636534956101924515605658192526930108236845826173072548342437602893367178841115183193793165081747728789300350413326957767879058563393000938892201001881225077949024196153744689962534241693618074919880290736991466400055478625340439416422673849454794748422435909374336175302535027325270256321453368076428189955878787653458323193661235265326416591911303673915831470669741433958551798429378557118242642284214050524735844878777918281468641799289973501312654843923797059421783355465554469779527458654234291830123152835991878246477813797590204727441190985688883093613915400951845041132799728719518544635941857960367236464629696194332962342503948339880358540503182223023366514257454628512396090560794230460197933367059136528026996745099990366149903872219739279014432212005711965520344404797158279600478304079191321550578304681122818498440848791229588893313400989810155845410222634278702812609464222557018292502542750505088857196770942649249375861642165260203550348833806081183683559926685952277591223313940747050749766510849112073520301108552564566555476300222401589093377680228466635628336480318512828065009374535607273808890542751906112521893214119333437549976033265551414616978553989466573374495955542883782252792976718926354573729903189029907617339010203562155390559883209160450811363125479503013170789229081742452986653825391196814594621345144221226892981362103722880624888013453054151060154944667836133916324416536435010560121997928920212461834941648277260746045111614426153126447768749868629034773508761781028494218150765718527057521547720698566366657966920384102662970676812205844997618381018726401290864941435466626608074949264793952866132059070259362508700440763144250660402345864788598505127730028004590298167212962762766073862414797185533161118649288139225470911562210844836805291345216641265312703476362597813628958697673826951355733264961855625486756040438864960262173398707148958910727850863686165064401908110323083777951717592882611146201746537441716641903829553209014318959119260955833492439580206444198074160732644669113454371801387956667677768369544313043375545676212485043302218166187995349691532317704166429594596760604065579421913914051446121467536943528714297439104098737367803380735325815264243659807574135700927308886048870044536529806224236154196035494715790878623233506009019262291911019452219764288464550650255110037514030350171498252253355988401771391619518217939399276865583848732488511386191755098012506962988884416606566310817713666741513460244631625791591528643646628195100006214729194942348109437360175001144449122123194516871818904774250997269584369907161500996488838529659854753819930398129477579286386596530119861151773828203719943326941456079766456303246074629675197836070379655787579501694650785438219531410134754822266495449164832530551052114027585020822984386148396334556216177226547247755370963586914911039043849851391496147419726310720918505072862467750585965475607684199298582466274705074801604991288466425087674609421825791485223006447591201954192258469434695408650582529644918631420458242312596696608664924030269358824506766073829724575866297196580130378688299954323458155023710183733171839387319175378775751480129369411123427551787192736347292457375605245762133384280556161694599639416012380915026574563858402886169620803411068189767449810280405991027079962000346724245186469638980714426599398206074547007731194626128218957536811424124559658703122607672898067864864746027240076135928012356210843838342344021179897049886760060194566590854965004606282317416034469349538678096486013505641540977820835293009440059259863513818934531079354300278763719060255964884359345681746377302212894030328029881643858165014831722282446884322616650633779248499414825045319193336979110277961289657873545188913783053133512402334748940345177589601830385151683957405599817718671178538332939986850753388718930445939144196866043122526110598200672148422567618294197911062146653757851404115967718460785867082566925558734617390905705267271696499090649496446066879834503448130402276575351157917098635184634413618153679301051959300874282445083842835114021296254993166900509400433518541978610305279298313401469615663810305743235556800877488599084299079892021166091033391125702609049844711782604738623036237781489209495019790824020142908820235932424109428650918388265303041991797373537382153984383347788183171225803517362302417001637729786330070987755956604764703629860577934432054312051571020076623450808272772442570290774254047067777657137397797675169048995175860942936819637279583313731319643701864417310607265300565402199659826436078845418780127976527978140983917925326436153368830330009685750767253362218883837641937936848092493771547641464525818385643576892848838122949061709199039262286165844952205014891831410234851239119433568602598535570627464822325934558406634104792990639205964959713022861652973081682431639074662202186537117464179956296792108762887955658115811565299305150594675671191560596421376625741108970055712242174339434616536600611472532029025580883463503284597202643001613693460215001499537890077416364125936687628597398526318888464028695988385789993734756227006795547862750018267087866947870540841162146552609756272297760967235486575853648347311702335972240150869028593240216818238766023864282167613276963870955611290578198355949007865913184158673304384564423434617149047092148960739622746627404122950118117904215739560718390031111090578667071681199838729836696677683518193741670338920099536450575302891360921560562969101279493291217112961307473181317922053576761768438791168064765991583872078975607962621195105319238983542805606718759869228380127531523802369970155343476956670765201392643056427155115682609859398912573496569215580108901994805989678315545737950980731805067820701765512251933457845966323218994221768038346422705922339465087268348187979733204613646762635596925360920446284901565417639673376864567009508011105604523371014590391705216816002536362577381217526986820021102934264639983513841592714838563570569445153129909447899078632815356405714817724789616892060989199996708062393026241606225173824749753454103602452194048305700626537028639436202591930783526160601385894500914139231430519970056969988772902615951715191035376705156093984977220213797118688854259411078259042986304939413748521450008278680321976393956146239028958917096237754721296918164794491499028384662092567792010754900888565252910693020321559577472053964754821149619833952816433141355490282661209358029240608194220357448143952831037945039642948730180683888576605811073745393737900053364679134170499801159632318448779344159159424664289111920266417971421339004234116679518911323863008958527062360212652166133290535952617720840278433870295626638045721907335278799769428935254305660371700221163342633619270050436932599227485920175414360293090668664226447703015374604701765515666872369397832061482474094864878288201355149897054109197317858589651209543282203015214754829700028206719041216779974815612165068035266324978773683650857069992233871049330694329152898880472470894895700560714270842509083192128892940804458736430677120482320594958999819980527985549430419051305768307759575530581318004042706350065728127201440490212145694585605383803737632623799481533774613392154353742391752241114616265572034017237374950236412636729621305617747147427022211624853198663324630529232097925834224945314043403626839943454145777271840201367863041406902771951825575750337618285163361137088476651305300954379299766473018222603725965740287526352962819915724552399109982851167132931032141753332539743371838545633478409401174922579926319631775888579853348700912956329600733308155234932112288284779506636385395824668607223901729241890027820272641860772081199972644683077099305311883902448440488559128583304479665691908463498352532830065975304495047620160531747637725688993130810480228749684439176064132193697401457472424404181781733809149678193229278855535304413420994331081718487075203757816340164092109492372552334779091553351394645254957297296645349787829158650355497311364475391893812700554514787223387136120011843313904048785686230632913773525260840531009401261213775871890078775933200550108833023105361262240624502186719288292605840379875820604569462469867824733690766906022935792399152358734322940599950077532911868084654807666816866178035368767295057738449191605023986061562258393078616334924508477029281984906169840325434505025218091502032261017473639874401040486840910583821164753267920496153458088197533928124879858568114323798806340641785715075199271095730054193753697847317267012652972791244612433261812139250930831946694405387218984258163913269983355057742350557270988242120071348390242668066251695835284842833884992575138292480055967750325226536242382150271941278196625029943001910229355544742836129827687056886943937251035479283905017720709043621926576617447651631875684497835978874532955108187223241871873671956256619149954766898513091694695784564472086845236777336646282850316276381133634837348622489721825649586843645757982187192214219046846531596792556363566668767869172404558327773861422692638995939307761726447499457458488282262552741159368344446024415721717079446373316433470089126307626903378557224822398209962358576692097295032445488171840214210898857678402005381733568730709051018975283481240658150600396171954944609877540681334036639537552673790133303477361723790614913795660069708935821326108751471527491810708779082793686279780187617926801142544343118222559274615509085643625609895898306134269079039770008688891440999627161444963303985023239760090780214759301234426647722632161472764574787888233603215213542371909287369198637069633000748597696196411717967555670147486755456479232870388880051915265957699918221713596080773888823625195667254868819146907997444579593125932525934349845486982333661501491265905718343479271481024047647874385671059996094968963207367302737245308772515253819217854566614668356813053258057719807921699977712944258690872362820573475661216235709676336789416646223395376040343984231385869819457984146449579064240802793032411270176524694301399622170940203092867990770334825672348660171228594550659921478472621867652146220468971211522708725733263374496117957414919444519786824783054363162238518823544405477105662586927370928837733328999660719984864280511592753034389063788020244680793354980213268587415603302203432891030257389475333343289951203241539931620866061768986017750026475161180650158355041247608539350884792536031384933782765093556833273108516763649687411109511970327981023100747876057304879463401516301014711900752036914928392362836183227008256734720466396468407989006410100037754599751710552037771047816399145479031386247068272594630074283029665880340172964657268129570382476790308955661274138657920626358006712257922326535291772274469817964271989380413978137863248585267854965696810127160042438053283481037376621110180131228784412968721913494162888065196773189368818577854700590141344038877659474186616439712020523239470952631905717437208011047823227659060601595548923925251841510241672256631401561985664414442039354982300598748505295474024344278049065970762424119736431474823337428945601928039152185982445327694461525963996945447234658332827329962999345516548100991316134966061069977735762644685236828346659086356854502053437805128377529381012906420430574042933568556456874414182886877120306844612827210983221547207740447100704178742018535182626658461869311340702097574655974741251606911206910148457099535720268895277410284403614876558012657221306036493874946464236863400943133094005337643907089838137758068745652699672691580632028937119134812881490485247088238309523310551681679927941719088636367152019861271903305858246796243850660535312514349459372697694876089356087960543719589606988884205414375615866141032745137765000250198760267440458000943416778112921335509668018816312904805048156684494786216575532287143432837043759622916503852276423602239338341162723512383735246812786588659930697159853799685363905897804864795909701153590373735055906824147958269387958548817676119660060705691878249992300810561012782421125027663001917385457576261384492833330161011792812702363018220122506486233840894031804404408521490924626540237020999266800382374584829964461591396101155190804753533311549041726865990974440561958572146304999326127884592923475851933609175271935393796639883005020770825449617923988020742612793893376644288273388738447690689240366952199139547502815371938376793232614039267875707101937600301871200373967925987235464973488398837080741612427121671052675523722805895565380567442711384541217361835881695905233849716139051518904469025749081993570148319349343467839265843041606401661257951405090427813583004802447716471156745068749086188905273321228633
For instance, consider puzzle 23 of the public eval set. In model.fit(), we ignore ||(X||) which contains the 3 examples and the question input
and only encode the question output ||(Y||)
into ||(\alpha||), along with the question outputs from all the other 120 public eval puzzles. To recover the question output of puzzle 23, we run model.predict() and decode ||(\alpha||)
The first row of the predictions looks like this numerically
and visually look like
Here, the correct answer is on the left and the one-parameter model's prediction is on the right. (Remember, the colors are just for display purposes, the model really sees numerical values.) Taking a closer look
  • The green cells equal 3, and our predictions came close, spanning 2.9, 2.8, and 3.0.
  • The yellow cells equal 4, but we predicted 3.7.
  • The light blue cells equal 8 but we predicted 7.8 and 7.7.
Across the entire image, our predictions are close to the correct values, typically off by only a small fraction. What went wrong? These small errors happen because of our precision setting ||(p||). Remember, the encoder saves each number using only ||(p||) bits and throws away everything else. This cuttoff creates quantization errors up to ||[ R \Big( \frac{\pi}{2^{p-1}} + \epsilon \Big) = 0.88 ||]where precision ||(p=6||), MinMaxScaler range ||(R=9||), and MinMaxScaler clipping factor ||(\epsilon=10^{-12}||). All our errors are indeed less than ||(0.88||), meaning our theoretical bound holds true in practice. There's nothing broken here. This is just what happens when you use finite precision.
If we run the one-parameter model with ||(p=14||) and ||(p=4||)
With ||(p=4||) we get degenerate results. But with ||(p=14||) every prediction is exactly right. But there's a tradeoff: we need more space. For ||(p=14||) ||(\alpha||) has 455,155 digits whereas it only needs 195,066 digits for ||(p=6||). The higher we set ||(p||), the more accurate our encoding becomes, but the more memory it requires.
Taking a closer look at our ||(p=14||) predictions, they're not perfectly accurate—they only match the ground truth to about 2 decimal places (assuming rounding):
y_pred[0, 0] = 2.99738849821149
y[0, 0] = 3.0
In binary,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 0 1 0 0 1 0 0 1 0 1 1 0 1 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
This raises the question: what precision ||(p||) do we need to store each sample in for the one-parameter model to be accurate up to ||(p^*=32||) bits? In other words, we want ||[ \begin{align*} |\hat{y} - y| & \leq 2^{p^*} \\ \end{align*} ||]which means we need the upper bound of our error to be less than ||(2^{p^*}||) ||[ \begin{align*} R \left(\frac{\pi}{2^{p-1}} + \epsilon\right) & \leq 2^{p^*} \end{align*} ||]Plugging in ||(R=9||) and ||(\epsilon=1e-12||) and solving for ||(p||) ||[ \begin{align*} p &\geq \Bigg \lceil \log_2 \left( \frac{\pi \cdot R \cdot 2^{p^*}}{1 - \epsilon \cdot R \cdot 2^{p^*}} \right) + 1 \Bigg \rceil \\ & \geq \lceil 37.87 \rceil \\ p & \geq 38 \end{align*} ||]Each number must be encoded into ||(\alpha||) with 38 bits of precision for the prediction to be accurate up to 32 bits. This means each of the ||(900||) numbers in our ||(30 \times 30||) image needs ||(p=38||) bits of precision. For all ||(n=120||) eval puzzles, we need ||[ 900 \times 120 \times 38 = 4{,}104{,}000 \text{ bits} \approx 0.513 \text{ MB} ||]In decimal notation, ||(\alpha||) must store approximately 1,235,427 digits.
Note: The ||(\epsilon||) used for the MinMaxScaler clipping must be small enough that the clipping noise doesn't mask the significant bits of the data. This constraint is reflected in the denominator of our logarithmic term: ||[1 - \epsilon \cdot R \cdot 2^{p^*}||]We need this term to be positive as you cannot take the logarithm of a non-positive number. If the target precision ||(p^*||) is really big, we must have a smaller clipping noise ||(\epsilon||) must be small enough to counteract the massive scaling of ||(2^{p^*}||). If ||(\epsilon||) is too large, clipping error destroys the signal, making ||(p^*||) bits of accuracy mathematically impossible.
OneParameterModel itself is ~50 lines of code and the math functions it uses are probably another ~50 lines of code. Only around 100 lines to get a perfect score on ARC-AGI-2! Let's train the one-parameter model on all 400 puzzles of ARC-AGI-2.
model4 = OneParameterModel(precision=38)
model4.fit(X, y)
alpha4_str = str(model4.alpha)
p=38
len(alpha)=1235426 digits
alpha=0.88888888887985450461418089567400910385759411751319136569080761162508585961385438591124950579015732286738611891448515525730181970258961109117128767924507025497287601246228968776482311123365231453705715112746345924375428667110332361173989193348163610674545639490043551636688803342818667721552660025685810097303405293962455192654401769147869789078393777477138302788824118241374603861325279610246541792901944454949745248932723740399809833313287032485288945145483537217797445618354043047060798474552143098237837305001223507484456535067564442638375113535416230691182405077897128056195493075396755413547922721601834652495834430406011389778841829459043543469532654623189108819121047672850869504501173478719924794149311988805739762375741511084926199233782604050472670292033870402040154600836274562310470849310640622682286178678202931310978791434549500748482240054127659198153329301270215475094834330989725000062982496295290928015621435166162827761433898099487088613090198763618713376949162737457694271722333940578227059952563178775704630755628200951973824247684749950853276428329439309657271370092556435650309837806565065067088724445511539616872731141060303972280107704351996814415778837448514008844645032871671722333567420781095079372780363030704992971047089313050203865488500573556761586030937039118869986245884265726117696488645110940046256648966698187559813613463977197937809878069548301209792477269072473248113738270853715124286282338286841263249029752312062998266985890618217990341338316700263856934166828401238784806704806493905113266675078808138788579977309759760986188858895408830990090775910504685996492538632951405688499031060920602603126477091041080032523097781521925057475196746582155159334652921095340217156011916876519198794445681394924750980375884376552450192510388121691111066168983584844915999763875210808939874599732134047586631994531120186008001166208221445439397501859216904288051123183679992148502584922888034678343971299281802117952427329082335249688619815377294743342788622151637140677463480946342855455454070056495280544023126866264772484987962838150063187270721558084300741510636041225175871465804686253599055275320008688303284832268880488983404599281550449538899203380316770288340446940047222194748834797831531620417968066443774316990723472074255395423983254589986713873162144701449823944078584502851581163506851970625372783975409038321399485607444743837935513525237259311365893518353082232232694063604416286360984776534824168255122336433538206971395379027358379778837162507155283182190922435451907558441594245688023575311653364573337673344064272161519974437605411359750914110857165808261521851754184037865619525932651765949095849303843211197982786994904448082559015732376212858624982354787737897961438859135396698048272437843561032036307043837401854991958804877084116792931777256876299948022894842998133695634163490798568857304272902446121436482780747297934675733586502513366375025473570572514398190253496426256286996307135190632109968293788539034933085784469162138057824054407742340021189626376040681718731391522251937234104719259039399598838922118885155196651748336722995143825913053451732847767481195243024268616483642770843304182669641830084855318064555520215390913577261322880298650294375833861694104362745610755471996277587424346882568608104545610950640114378842545465018194330748600688147248966759144930176754384757781522377222995759767817389243856019855005113437665351743254402681935635611086856510552889328175283355514818536187674262735560310891864680677548899530297824051316199549672247302651276608324881863544812601772315668942515303756187544550753469148503492154045346769975137664937088334057765403667998689972241039816377598055214987572668386839711238884706800351480268583703650127208867726276201064060162649675861083920906153962625430202774599388358748998628647877831674441890926450078068385849107991485896256080394250225258452364001093299509586505814902359779299908583546640657498453064387930102297295521426209058836698847923293635007455280181179595274599210798505148483112247497799819269243337031264641822961485224373610926803549392428545210269654963369976853505045180994528452254447482056915088859145951416743098719350385040887086944373998904154305328434458174401647850371100269084457576725690841849422995978633462473039797432323855789599650669559228194457808022920473853736140540809311575939732639393633204110255294925543018291763111521922989884600090938334296417854501933950981881745019717603285726860207476799614663361104462021297392670725601145585433506673272139755989831630902815086209505765886659529070216323047849748426547506524763667825089349574174374016810623418157622825583835155498437226570368387262955997934367126016498096134584640836743002654173703522509176554277926862262976281290314904905239026363328315856200922527265033878552826139158002318562004723613141827837516451705628042786214585676758131307098917423839329337966799616785804900126564760062164324397355784767520939438422971952223161072401776945880854855906467575808822213512368009401414017672592627067241356009762118793306029851337154838536922101788699141737982942996554937881700451310312882369024482317141311646676115802840331050627853507455244036565922258624544462281318004003950866940128772657949523546020042325896740316625458844484651906294324440155042286620345921238899267258246154252726336523629899023992519549433729559155631767162977918465887531884416957715786550770618457276092150899179026734479698763455046835888153844102100518837413813326800491424652107771796401908885536091891339521228640591108170513726309595995168349315840989690755732143876124742917538157643678282927967279903254734346043510496150721542737660690528855664321820959883356175909658691906324102680920442315876730762706123567348553477220766553539288330710004336900421158812951006319578938978726423711556875246921462131991513266431900565326319076471493955806786411261483319328850373025925534815041419190666015391532159902997095357357446258084551114764487964584906704256690371647994140696291307244646782077157912806206583561646026679350428887558736631807984861051383889531803068099827868374217468634055616526470514420555406954356187535369720896110330328553530538799595697117005725011658147680324470893540956113477759998820957775387690254394118391328697389906067157941206343575279258749871947077156079920757360835853424609583684191939360594696938110173863765030801763021904366579572910027130996550339451891557635863323516141334243755865827453253728455395709208114888551311732057693267129363500381351481134891300198630848560452529804696249532949623623937623385574395673379170470953403019657441041041728030074283954171103838897498124428115183686160156593412912413438653370197143611720610335026699804810293202793547482304426860993841587060412065871154551627480966745707871332188410884774794695940282342863996302616308764676416693059099674789940461842904564467465780123587742881103916876793308161139446845103182831359233429180956232061728709079775542741093661852039351505764412280574884019215603816424833713270154409446257177135456144727663880858169958921307973697006424576327115817204663372350174415283577331353237005182528211561079048546632389147542312371785251529424925835630601476656762363731276402163240440592226745693926157780987578091426196631458094410668963651923953509934059705958733714970949894809645472489717090297434143534756581422172236938115900655172853061213665850572932256745792561016440654472792135767139718326353537364558350813207717264508970979931383095807190058197627823081367259200746521909500280603230588489117302977072350414891799100033019694028952160353725883403085059160814011536214468267775178797215611657128281329599570194757906104195239767902003237665913938325587102431904230715837385273037194863479548339940529426773548997582338806724115052046445747760423042280315236509887887196078647185686392249882594331248825938949088337558038274951682851699979439791948145727962081082852657803146572248003775086726483702837644052928743350606196925706899330202148302957357915017623441337191827768287135968460769190162499639272916452714433171006113908553016321776102718010081237341914498726315248446118161614592558901758486703035000237124750647978182287150627426315835520773477714722090743687217858469711073674627454173134361872534514058409917085212795095900296814513828891958284280961866714479480300072569321284716707685913367896008056203921960819074543953123337383851981101823384837816915543540856140997177894966479351262590594930725876418481118581139460379721684227053743151813369694751873724547436971901041169575087832395419593206204028829482731137912600547138514061746530578876829730645727833239439956379952501905400563669214966155843979221859290289482161628222057652697547659192807767482090885102706009233279065834371192532316426160612692122798552054022485380094438149990714765696145949295315817288192301005425804874453410225369998621777112269184245388027137000272446383329985559018773504348039099328844379039933709727649188054650830220633458771679828005933763253900700930304882626940048392520711121883693898132712842199192115659362178486609706903766147061028860739300706174171144231561468167352841331647595373599341606829406771291856128233288710517559755232383699542593274630070886258281373150512238346184652764680561115546422930243149684035785374145188959967620508778318360551908510247463980167337195945036490071606378529615985164868320503838114694689147195851834814978125571607823746581005707353183516230561393616824392796713522981743439811787278453381489970547543821571575177659192798623924954312624796698959100820497513123133209919699218170737155197281857761285714659263916903103166336861241646950235341592073292207430897880950950196785315360811279211604912063785581817290924302231719808190821250425234763649648472269992525485358530048847747317936215169561740685878668345974480163953445980846476162310730800792054465988994725177572053408887473776718566310250020498588907377990348027667508809056338072485315459171821088618792028606247196863154412819544768581082985236482061121418564202555709941719483446226616876492547271593426244685906056436891930829162914090444689354595952976289787427829251198442767839771379144540574063382384134612418254303804257688525873448573787491612267127658018235297601374794031986924746499642231887700165686357256761621565282729083437385938884093706214770550063764826883055725858179506387330906659336643456357585658450396411074581650204300098759919865417341774273452557252210652710964819457574499337342582287847244456345045859684058640345836974097929398650693686757985856814378179551530655164123806081921773927896551117386104079088679987464336627531229031461811541206648325420734847713512800038589725746491093662003159926463545504598872312224714479183586934057219376456630432344756024076594698599194092765899231207923303718771375931887391419642295763864193789666609298411050873656405327298008130492452258049384069210886676722806789947026227979448667528697612133365352954707627922369138642555236383746002972921658350971219342365772702299295674816892120003000644474535774246383893178425308087254810024848343373953739574096128658362929131190802101042848580500474393204493513094315438376075440852440965747996513951443740600361364480076258144714916265022073866358948058852852171627881030991545379389088263149364989686676223650294066594642852168269494398157513654804189383806363273270121399621484841795071273052561993409811210575002517602147479581407743684900553614753011522045348278034352140649822124451534266219571935243963536013488284524927395507678546167787292592079316430752660029604357275078927818266876378155394390859532746544809674873687603092823570509605274810306759533163377044402761507262376886908062438404239688669862553010316229753867995338368036694273435725699883946060904936403281853013060416352108428341837277604638677256426922606340805506639327466028535225124770328899648924159419168759594308400314122381169446316726894107508779038809705606699152387765499538135230382320360637870604157407132557469815138141396289708666622479467574395686009538898282355978063673107829244003261335376786195615842971905846327275912545731821756517392614697084651758766441884276942195142853898641224819132833691928804044997630490493173661630223546616787257757696147056633621694891006927303264625708728812361223383566672391693805012112865889112964574853915472994451941551897524989486863362936087190020840912363871875327610489802121296410211264119434066153722016309317224471091705234169946135831357250765487015353669168001349821716022448997993498320866228135127044731051160515004553864778052854437974948337314186753116799321579958202465399736819779985133656519082097025253153625165575611007750704941837204937742174937201451835651978883581586261456417784256983354127886442082924813690392174899347068265020322132572744470298151428011218610119728441285929123884905694156542091305620251470202577662880644402033679989588793173585640487849868790841400770187207362445622394077062928367155059227115316231020920870620341973710304067494248863623920074022882413238228298244370736234776154689279701748235521663937192686121407171998927346654922321246696115562395578626424591099370450950475925717765376855075286648387430840746799064287807945629527878538093965588986446642283426886753862140031630743095451918936186639549001859163272336526793049045762563166787285950981676856087201991153071562201744982212539793335043411751868940791050195622668848419310603203014524277146467660341836851379732633626543687239519866158546904785619121516142053377952097390453842513970895474916682648493017329583952517638680608731989785945026373909087876037263641384149677688604705147760938297030234190461662913813768582062887266426557370086911545570598256106172831013667435133672066015584266018089909088491030246452414205234111334447102168839652493867952010744426737391543235707528022793061578642180429549477221290463865734108323021670483833714648163357494049168964892888063406914452602541777905428094478282292216744109697900362814519752941507233543364853918635069458257106755433926175913856465727909099154247870206490175912380775876809506518409322802726975553604400000972047743562342619862616803066821502039700231592795273662385239559658771954955283620777153832187680691342712643822291935334244006605109579736161261451690912439916731605020722771426726110220125753192815776822548110536895830867113973795699104868703754915403696853455254375298788483578697551208187962561692376803872761903587601457117606605186348377036005219280482383952706093101793731273497613672273011940969388202317148305999753088979298674577836325134045746650395271443732317597022772063759910058746958602905325088865081796921606200407795853618127835861197591751908619538867430729621503851005204666566142997650817093133305205259069019847659515474220024804255338479473393316586052535181554167866380055793742750659533280663318278726996527482612147857582679045144130167843138186417434975669968773361034911304672879637597177648434866237356632134935426778693227557678675850906918116832345368588272425553498145650502425474692807182346330556819415885098706607972265198569855012232683772378455395308812129198251109545275486272202058558794847859261982422465020771886111113866641839090675376720791201893114603903270590841000792147350124462537712712987385103213552758548675187604145006809243649830514961898657669141522978080704206054525118119891406492537935799004296348314258584283711412241197478751018160366193469454181352867527228317492931117197680055337152575122272845591415307682536706498532724441079274465660889011255660992060338033957816689401497981737896812019971987729766315108518520138694016189747525926097455660214993124934411828963210061031311866226309722509149930238862145393248584421393347434838649651462287822812787739609406880143766200727348885173131252966693971477235716678199002231251788640345238334639292679691286583799835434264698609409413602830680650396667315610751465953838681827426400734409969734511687097170541064645082555417174745632674086689272193459841790885442756025362755101869766448779764235701484825128376372224589409921588281293883803884465981717177348146733567525454626165340858593084080244728905211245952593693868718953749753357866108850169353848487997865013923918931379451679717065844339113051893063964069003030247076184219540343528525033988939441598419096475324365846817247102261040999528203136345668000023917520593291421557533129705844529457600151597828364813355828676447930444031756849731636425860359048866503915226625247240541303068337245059273517254962915265485672194254138209006771520082854157392535955283220827916484589393549496797970304589873249036834507802443973877877976371246411163294486735567237024145314944355050213466350965899772488104958145441627041634928323364495374012273564662169101749630186821067073371774600387819689415333369813655988005643674619541771502927946088975361885985436813903561805735934331908149414628479016915462576040548469588267432650140548500703950612722066526299487250322204875196439217250572404537304015246175693517782928987792865852974578534545017042887862774571497789043988935396608749004324093052808679156645399345046780386290271322198869539576430609692892714594215079793117629988976573143308019305548796526263933249512187616956453295952432062997881642488153416265597052731672101076085196576010623368538966656713594926784086869625229596394740262662529060027710084448887709264778797113517750985773274753038750572645375521552891010128814313602208749678041752979455430047803768667272112768628138101595073802664665639789891192851270554840575826160569618039595446768834078026701104140728224971314523104335520579861095495687840159922060044760488429856973543329542488127774400683277669959153356553516115479274052362366146812183523139311212223361323964946181496556399787258791658844339910961715439267136221923411643626512929331043987861235966137592474823438669019421375897827648961313611127214948731044906659918654268711163546200754198000785320420336276149813960978806684311591067621739455986480088526335245871123566150357104406549312242399799442964240293498789362663856508742748206818800411775895477757912849599081692827755603780292760130634207968743585685442487053206636764265677892166793693460138679431626587843651930109390562885639716530100723194949829189889879898122875893225395587761940211163851734727677600307809633394252938299690041708018128359775981306121682827302377326829162562038454183812587438601822621656661383744386166746466928105605725807081018826050469515677503339525286013695649770545416958295708514508692044307583277579989331457066029622695064176453617933562860804979626535816440024451803503269812669067907174601295418841878766194979028339329707216728204407388816105772475746504261200418240604265656386117946911632895599349069991715009690938967722491650467896877577673332266205568900876328848887960792182636555755702395582515390955429287227206743676850507368956702325862186727026054555376941740104845422468214875847768406863507070909658632865605660536771384371881660091816713142471141330535546809610807646662577049217226736182415094245683263411069960625814556160236962929419556030126292222239011048778587245433366064209563336890596777357183324215659322446233146355976290466433077462427896399135586932059404174452124462072917966137778888024294069152095507791354011984211270828945811892744954488350773303419989134870446688268244389081223811232570703981459349484860118347861141680288884270948768876239849540745228966916783494138125616116341596010489494421674613322607572583521007478510358338777473691686220439029803782871791087242735180683733529555576640713643099630519326130875905618206462793227663765147554308656940007890791308617492885401310870263091552648735125170124407771756893386238053901813711910034789340322874730601884777315826498999398715537502852525512007624919570860486728473997167553170089819809327646689668184841106876838357147326427194125503266194927317984049182791366982881540936073332667953992235443753484263193631962218055538707539063606961798367753428824766640967708222406690962620870811958852915517799242310138844044323627957175592260025751742360019403749581273287677104192907053673244154007984932954329215489817074639802562675867321936352754300137873787392598163890405539377445911130177852749518912103154258186530886679919161931323273034435665092778104089863678571152532016192390930047405151657371920868725508840838764141785002720040425568992286868614854666013148646987769939764270984920415433623534103473632831325108651761725012205952988495528024360750569098325309856130754719881374723903872263775234683944861872985357429452523564600912728044296909751388599842477510338766144487258715348396462588244299226607588558425143671755832196726583797694985982120992648456908467289189033876694339250979030637791776681746195815249004744118779795709083807993733135902066447611934468407325239401495389130878028708854670071668519006489484438216042050141023801438791475177697632792240380940454491611747869034687262601413938056616707486902028155483439575946226729641948081919287110992497520633307335423206556931929491478819051937380532076165471318352929995660302645479532594677615604039877086147380521338659080448014230689409131305157125189621696296946856669699177736305433484618868048880879391483283658709732065807289472162648893063518566792567288300562178310793930285438842069996947813765248135411867869476428841499013338637532304527169791968730627339024802487083098157519133275913141075582440017626073106002016403973651903343421040995901250460974888643688351976844818450700000841349722066695728322695990061995157452298152196602348415306316948833253276375959420389413428099331973704543870726902122221770887477892009330491282591443945345543427966418363731558189313835796898533126971803640131722876219711811254588405881351367777827435152773836170806774954513637667400315452125947212181648890850360127586908218269341279157272509099262155740627957783517113252441711709802591542426993207208036812955629539504893283368950743510147390173311117989840976199313455212064006810409486588284656296403854834900063529147073194083216590368451251502134678969329283902153341105104914818176209630955240491716076379043574753386664432392197119881394387011721936996667770837046743084732391268830237437034553253877670886708686686929777182428720894211898077773822986069408564837045179138762322714390701718313263414335300312469850986959739953571480261977053815218859226324402335929703495267123908200964970544092047592743607135215312503397589390910879594023645924946833345175125093039965797860325885445891719409306505782872008556357052874681633421089899064918546631087328398248421390658497228977982441907719384452726469409361705324798914240102008138036426080074205534150660794166498308670077437735587425435844825603726621404294032424167838597068958178646679356721456753754854768934826473567745093920693563328763770468920538364255722750162119498017997445960171216275352612113366554795449950948104563553979695978935771404851116087657650063309284282292564233337138929923725858349818830904990449102109834190176460672388090219526900049785655390037479685210090507233393903632333792294631159895996287931609464832163738450481928812587683467760683196136379622640451144600402073768586295283955848341946876862316049440147899197791456065010447836722039288145061769998294964346113419259976270543639681353477433479475584931400396712521378715476986536894709996812905888928319191234858324496664847099982413211097547926945887319362197432325663392676491304466507526243954417650222731771138830194109699747325630714238927577862830905733518473011886033784764526995299198135879197782490056611741194114635574845715800388839816841583151721811114880360918570003604748814727911241314557806194818943029406217891314433012919495879593534999854306534087504613190422629364208278137245549755524294092166378321617932904664173199506528103687990497632718769028721628831707368589065899286591352865890232339458316313641164163984437836161184025678603488777907690287764899975484256715936144514965211374758311646514237741850204810052828138942549323751966666505721242105005773108667039883390879421366353407603815285826789503550489177149845167380291808529649479724237123432930242464286295661550197898279304065348259077243553854636484596148286408955979737982482422977168314972502295363413791965348178798512370135607422385871059121907746957432767810083060152574486529710123365341544644897244142685447246459510272784954006601423493904137603734494236343391019553153148157641630063845683758346405887101621909802878287065526398204806483372657715997735271686845067074506422751177842424917048867819909868834466482691210710278071249031566882248875614037821132469138964277824833820968186302297564393187583201295963636250995570357377065166975428923867296409528060880135062463073213086783596387823754979611441839711792180480692588461165115728181634773319978248870260963817506189517498650192553579457283071227712330518189154708745857073621740969424851083323470661897584035930817500742345519175517865506549896249628904904711112751125700281030487608659630885193921874284838150270602226336503385864007687119289015415265110265450888462917290399586386564422754727734129434142642330348870132607655425558923406691702138729900383745077425648406742525147610889470382710257906357096309872528891437815119153916314171534607457967048502769241240234931371719200345059518638953885769927875741638925417375698892142103944996975401715254663401076826032737714787491877638931535797299950076476532213606099893283838467133209911117587691233293375246105552241116191647710703939595502017134800102478225009003193543765186461656485226224266069983620959726107971840256432180544483806561708770318282755563328292362473787173820498431751633790639690872067797932934891724581580932500004586948593466019154092470321520412539980521797534582186669526197055771711576776108897418052337246219580729075345537806666001754065019028168171946907274105422575207564016980178867160253828777939765558694161021928793499434202262112046047319998294679874202205214314229820418842977271335337889553236139021455035326384243547482844384443586547857987260344063128964412859961522850468161883561740720775892018958450596263769250901417971960588663618195990423566606606881715450004462289802520219416986610043435142690895577822787779247330810547972926160168587705557981066040551843335934917231313807026000594519432435008285557640222087380275458499187123091941854569352118360923570020904097014016316600431869504033728990525907257999633324750766200419336749491385653098641648670331522336334361221490617798755042950465204670546300768119264342606503922897648313563447014255681523731048580395617177573536276455993568815935747479018353554035236878121175501070393680977530536782585158651198999016891508631455905305883258874483656403249730316476451116463028255945204679597562583498466937299337179299881890852300048149444922491873484538434493337693999426111043892188072091935155997144403154320054275172323425931794326830280823398855536560764825550875942314844228279235755940733670042783155569893510452440866004773110610950409957732583588933408094601155401154377855170480102601195650958762810005148808823015369673497765607122121020603314890250526145078293716262903197146576017907215994927497921356304641333829556217777426674836745664704402444274818971472701523925657153676774558097744378643122935998125999274559901252812373614295050709528487625271124467543258358767160492914870917196923071740078944428748993118188705812075681046418670522833187503704111908570350481695442843979974054322695519690539843541349820781323742255153946024805698657823295962248582129860396291230383858480351849121934578770787510366255115427432964826968339292801233136504751977244127863637258088660127547604320388877185643311441653919168834197634817946669083756259165631648686530618042904044402752861636390831339821721771729732139208820543035496516068896360157983185994914811063934998315616599326543269696277624286691673718092865537627700545183050208775590728709910764610686205144364568218393674928325478545171690763463678271305968867048554192646094658151531641506403200950306959199076315800561978757752941187424223663414902979720194852666366877478573072586356782941980849040887800503444518120122024081686552763054837806528480953228058569072584584786477670500007899292808966764673963424704780055386647051287167881098902703814286898272822467620259785446094823199488884808610992401035142493468329711073126783883486040196920414030234324571727602182059981455704553040612392318712384417291479457209157092519229300180229252790649655199734562572588901274955949336188562162976512425015312589387384460505963314593555679057205520049531314282740099356631424708713829578244092749283472858758945236380919286935314605994604128170526822115709153011342966560342037697373823737942519000592466053768367330743062565803906038213230539497091539946545330189822610610148743235963101547615223901090709689503453999118557231156566375607396523929901924042026911433862863826386902393228549210892852397784925569097949613050337503338124866111109745782385654429594220017978810775364996668750923270527981285151691520637025066736772796418404804855025097621765352392669878031039545032048547963111392394095790929565002825129206796661271482102256807796412179119721702122251707482678430230711097435610039078024643530343220126497855504950923081932704042352288385109116672654980559034548008895843242789897638901516666519913268733930190625201443260958210823191748695684775497619697544842693362308426122560067469627950622575848060828189403338373463675322628118830266167425918587612116825590811821841137356183486825735080797382677766068265572697219426057644999848460726008041413064346724629595393530020026936856378613465575107571977933176125121928290749594451966723545175822646525077836915528227538117680956833290115322661521153911230350520216706643152535440618293558291226067091523980587296139204765576173621556071246886070852430338703048546341903243982600774822967811049301267326744941695820295383336555049664408461611859880430198400281427294690401856402395692042791645095149501471402703614815211940382002817491956308483160157226137817316381764453040135768247227392156988066593221486444543457476638068320403194768928061891005148773622091721853352452477730504049244474264614255880534115759624965808731232113776025335766831137577577977268210535037400892061705957823221710208633837734676504395932619445458311075161536218819012251514969030437043847662250328277818003078222557565213308871596947804288100337206736231170245826061041969029495041814644692076858883058585397532296798416584783085226968022563379802764599634058333835811482669174570429628684645383500187518726891199692238371153835445303448768955535532007548178699143700489659609807906939684153053826140196361762952394502349358626142258766351771550534145172972265265297418949350509073289102097494847886464794546788609925285908210755688001163831195924912863356487868741321144282147701235531462130600330742110581056776910684169476737908129274540421328110485910243581657161094064530940868437334942498584764144469589587739896748984171565833188914168057355216224501968023619561688156224603819032901983993094551899318338986223980226207839505808383017526863217802321769430005782866742505276985549070509122754158654167165375537023909677060656582527632483518450628122613547008154085855553545037450166553655780202416326777159396543131631152401768009417926227543638207894409378527025890081582572535540310847005851358854373299890105984576867237459959410285537550614451190725094644830158143188265986732100340243422865052305448375474751292792718726513864532070712949369578709808355334652229426309008927689532341111811587018161637171235785224980771059066218759998871724254455451694903492918628888487644678117634875478339837057565224831268818067996945297299159777034702954739409393581590078218005188488562849999159612179185956051859401002213694272244561169701135037881453038206395731050121323809421868708430743278016218204670727064071492212632983673406981010710034480400032355093225539187404004834543183333758045268738467795590337996868206843014916308273502583394017711423969031211224955692240702382922774474291909079050592375622022446386653290196822703101089866682617930917209862168739896104094504514542973837389259225488131571096573770413541855290803690839395759113073125517848326269788117378440115651389069773024451867421995543001432090077211915162096848402748030780620977794209227199168294136317637833703220696427995813995985768021908251590045535061129617918912781433003735821874783781646735496533703384958053226154184466583379984103773280163156896690748425575716069832454967016036333584003621426570419097648044425045105184652784278929172258191750902465780155336246748335917075122903327906708961214341448526904660771643326727197395064804570212791858634838903903255046571774625296938314535925503595012074860847258722710301526636965973597670379098408632721316549383165556746995486023213031441944355672934372899749668356667109926214584461780735944930360950721950891356063339625238721681797108752642576026417502117800534315124521663654484991457981911842024340755508083349459026587769269959095433153247004426725048895908633938107688762768644037728602115988713452433871445213013449902112101286029677378241076997074568980694338942733552323987445495221384737360786050634257388803040401227230766816098819045068448252076486102712625409668834031584015173421726367951181557007823637975682470574991886879186610330310196530979020003431209999628167806411368197118104481392909981857758878879194503382743192350223013126982909432948036288823818226325330632384127401821805376425856901838177950343350034411166139565315644944408829425550136946925509493298121313145123540926650970340109104954777910546709256509100641393258272932854374487511574335834985648117013617846570977812875959465182738530948051765205406177818775073556338908602143810415146342468516786447973617329011430033117683467887380806119512287738832452603519714587535722020889355725482692184888870891295803317716056402627267730504473668207078604089575327941285293682867319528918039745978888200060990482764803488726723489708433853014735122014184553981791447937780904935175054684941286539600990576168258778066240927363672746978536574923889426750072921902442590092815799286987369265386858380596298293732250636500064860079799496323824100817685065759029179933300345694151099577647142147955179997292337410776678567892862660357760152588894716434826790875804893827025358545516331692676755633772653147414885985550685713882983221577488478307511321169727981289829504368972817954724328031792335596078725320323584926041211750825252276590214652679071921177505517129137376011278512209578818410794009383344865400892614352798736697272682595076740808534006114115619129682562935571706082744886194834802842914334388177182301421522038570552861985451176001167899515704850356036561573950402491562029202824012479703208809450190399693131743016492461829198684502261142212377322997772600214531560066649403649536685885267682792040798157513143166735159542712519214731603920779684357836228724430019666416557643273393873137177793550100343626926004085852998505499670606664509181898207227251599521968651152161562084848492394519682987390793189714854474221230595954038939912088130077257766256300585582784843032829435004972205784244975308114409087152477328176546575447537858370001326807474297669465687363008132438202194037979251622030110213676083496818332718738685093409401164910226681358990501326799638986133608944715877440010636808991105076526672567631783477657039514352460703638136901465479049583551085535800273948773232393056520247928036366479219814130686844702257367231475672766941928443809583999026906709899291392146113226052985276229018573771259811499819668783090103998970690824606515711601424773259174713912379274163909386146821817790355316542693315341687815983042654964749581340645006043546279760498049568249854201126490949031031576870985650317747045281556411901306145813893396241362898865267322151851678025646544315752473551969437821744478752621521437970960913963025990279451409260805349672184825765672582881907175317262287346211875769039391688676479773151874353194400362372251355215006652802226759702850426674583373062181016791287339225981487174777157008443133815636144341936460958146684863719477676223581368165426218145468167675701364451476171560208261723997295700227454104115241247406886959032206408548353832104045422649752377297052598241782317238332900071924460642444757047730732290214075651752734212520364587336618542095448795983822342431690524352521471693862787228837165281352141278103338797786645767852037621769775734971209408130093601113190251287198673599259052051275360282057246292944104618620301807159261357930143209042567403681968912420820547618387248768074969276666930171597049879903191820578248315500172600773410402326895534164295454313280322711296531698795041847427650636529107033116127226588361134310392050111156718105453838440613995724417354470170892561577023329217352860902977421235749475553221055853421060904677176319563369921738428140822902004424089568550830277130442015644821800228293653351974101190127553953637315560519158354111227615931962287244583712747115890888602550161353499188620600147996663657540319645544475689735935399853382564847434225543494975551418251664997739275700481133098942431475234194049652552656239252395609355965452905806905579234866176693239023440837135473838042219206785709304060756975573790845835579956624975033419071472350623724598422168734444249426661263651687551082562288195977414370293063391082427990495928906209591528585001680544395491095537475124516174057196153908440928108083577680616847882967228873630643506580217686732001538465416551112005562532780342972427417202213872420337708776951422791224624397647821140938849430578017635961563184861205768812830379268885160192580900552108327178181027323984933321053465090136026939706841569031347475272347371145658538968604805057918297677207476612283323243508597371714672045691289985287639774214169807917394267301147875600466347314964724669443412606343019308305191002890243626184368875141074300079601795964842103436120276467943256787896740463643049138416441368976703201428136949619958303881832595551917151610755448220020193312181574302269981350014700248979590993464678395391421881392785862103780875419948401829172698869503060473897442326222852248595779744589880817715201995040654308957009516838114476697341606588269843357349858451792726023434583452285040373496850565839305141313588863529602964107620113188052444467312430959642001101448980215108821456529497881317971250251598368831416508136240919001010978223986404813417053459085269428080185477502269747917010943781457433085960585291110280483850135046187973411970615757271519206255596719563605530519746124761309371084598332269545145940756734915827893292021020823869923083788530373898826637960443967837077496585877458712690128939426377941302463655756814280817980874627098152649732615506303575642597620449900772256533340886391353255562094508507882774419226587196598082070140483681464697029711956778261534957077237160871719365606883323071025711162484142212107208628234141217541508195438725798490295952440960805449895442015718725584228449794377436080193012176339105136215448076073270795416725513660454817658212764801402097807384042988421152657782760202480863782194852958040537928344738508738828713909494247875649458587872668240438878689891912170830462778996153030631327949594069017818187505005077693759363310797634574157487782678945138035221412361791752704042658938799623363329310174937625120914120746848406596687898734456937033862881701032991723673540246472061941287821629188142941907425130343686070624677983850465222357023285944306972635993518111203435656061782068574474876255698092431541819081969929234101312766819326443874156547181874022341673938054301134245222966778119439044708313763388818712885159686045241998983267981255425259609623075982639525898191828349238535096264151191808492387623618593193204299894847223261281610254661882252124457579846207627223712190797778095922049783881615876374576486185435729642569957712154951563503495330864703117966876484365134738467945123216413326524353541861783263311610057246517201056233582876272505872528730519106681648617861857561461712307477985428677076026133548486344604252087130537415988447155690873699507983591565996380832038278852129213928074196330388779540806362290839766536680525193949523250926854295559044098150920146580534891088533557320739750043164622042050247320770168171014446639951510070386928319486502475727360703378177599144754496954431278611336239758188349266432728285419021730628757151881411451110457951156321081686783552360172966236958626994817588281602989516227669785421219681981776995609065129301762950662529944690620877041409210408404773905246479764535346051626851295235363167812453203683517479536359862866061056423903531362420801355763518533582776568306156844824019708560506725431676380146951024734496460767905540019459167206836907199450465419940166136235316483006349858840922247145775503912264509699968906221589675360678101847825921074296985647969851228741825329857567175022976033026751489943591766605178120557559984338245448467364573729839437840986226892023796390855744122269245230558269314952673485621807444756224383835721065725189078385105819536270486502763661242555007794908377554658100575974920563169843461354034912145507744299391856341419598096096601860592017921788657472663831869894240157083390207830647410105858490587066494874959999269116287150781172389280135110956115846282641922090437689855089512334812941415712742063471621676328571723298004111833706657524806250276279583598535683032132102413843058047108804769756389513734946548394594283647303054942909055542150061347569718255198847862944009310786646881912025343053745463017329850133600049370241181128387745618373792916226062452178116451566867023690754836338659556357424542828820301904949930707652874448942316732037696937731132011425657532503824694692032809721625918367058126941180848297136986745502912750475891029990995691243716083205524359559415640426809944989048660984272233733811755682636011298865113531704167042424980491452065369598840016952640461024748459475593033957112972957290496929204238534588467467220795885377476423660569810374015853316194987710483326561441937831228020394799851703778471184698615209811374912033019375060190859383090126090603142938491731494637657615898500897800395293528225028544437569802055067189768240410587379984736291389872428814349913850085703197522966361838836437003262677304639052598844925938981061968135079996863418413110689523764740256094939095188011864425801049090343916921472470510545641576609158587353765047852343283370832958257045324000283204125591889009299368210192043267936085593951190984806087782814630228719665104425441775997419170164663158273281604870851828398969203712923476397925867336301040322515717532750265116731396176914036223757713660530259819932335244712306590561411170421550181408773161343976900711760148016916944738128264614127659690168891636551794119183827088517223439460209927765303893945297216392183721023423115526415105618694147656250334788363502783451653861405828654179416468799578265284772514297187343619824050998424406970159540956203023759424779803369379088814721409498647396002489497543832900043882736052007840389890106364546406853250288078542978729279412255110785312760641272531517208215261085748804104666306909411938664450573253068958905257831016527476947667016332695373958446227004771843628530888294902405796540496953077451774110095853996266685912498500009875257258811054156276533929449285132197509985504135913761071801288481306705886355476886253209150905736447825184270989041354774930087648477870861607506807407198996983991353975417382019325935554208183244661074599773358813841813356703918914872388804572265782359884762609036289932287918791945083012028716317322995317457815844927360320987074467325485056079027052846399433896070682198765579149463334083532573263901757533611438817934553661254485524326341958306306599601702833579082760056017672097052570575693978254107551031982052974517081804865468312878713529626130240896781988984115883823310660004871883194407660245313692427351808846387661282760673707147931303112866712316935056718520431280726649158860174324514074022866109954581897417103516039766890532839971110077093776557352313545494197122978733280180130958465266501607987717274509866725209498412084294521717830171377829361554659291577225155942258204809021717384567161389861769433570767190917406717682051991586688390880599505235857524574074190068618225049004219827971048770176076601424566045995106727352139217387512713869666778103085720136749121754141061946763546996182783545493397385372257995775579681689764657651878947698286041526778255039033252073386302273983147356666919634301369410150899194185059711895566368490462114748206715661053721771224769316429927179633732398595674983122751195012606378820843293385667705273191906808115166747268670462769691687727768532144217957459293043467356769422510782381932846578447882688243995480980662815545370474789854456564088223238987849424857098614351200644567339317484324122012656709224895239941332244698216071924168320035725154893489904619734111844639247197625885901284895480586457686854118248450808281874810111484416671540090212379528152789541597885691178139137124611504643445044411092306144912985929500246711737882749944642814380712351169112034585809638579497522119483511704536961193923504303960235766821699604860518453706247987462374932044108070843860396782802393275991524295807443044141833459383073797893034367312239823117158856190497244790963719397618041221897824326791981384568179945602504284344353644727647351141422235071099694028699265142796478872998266217636289731171038687192909202037430337323408243213845396988976372012283208503607055509615061793681731516312823450697806417050167727396957975258939504801365096697682357910705260109565069351078877720448485013035023349854430308321377230571764024067579929013342479227842372312991297286875567870916634733815625199412113465170880674435869794879857233126868758102479985306014295107099250844463995564792045256858281690705293236410343288886963364266208416399277144675013681641150586596820748196717240009349501165130194157268074130621611565076805737526545560277757792380145656127511053741618580583461579849977920286175166701930809453233393744279460912500462551798891276757958205603083991281684016114123035910427472180214654357485145706761770650109808044442215949031978628181109497624287436424357951619084602764141201793855838752671342551510634657971990573627725623441632018141630694225628862405358573105218202503910130105578342240004148352704967111013691152446424518295795036475177192991141754808832286330794348092981064598174734024275673431973844490827883519127333383108530200929883922395264665483375684347775926977739237818479143441664705403507024717232311700298111122812223553798361017891046067542846281196725160860366159598643087526023282860725404119355240793643812426776483853995204406088844911062266084486860473891524032935085235567810813444286370101298921731556632356498863074385763751739975536561010514090921632868190083386454969731530542052815110294942247080241090617465188409101765832590723817220328495685907342211132854464715242479044085018536943237155911086667948643425741854805106294247044723017783706855323576358347594269959163706408797752847291665349020473743622379979223058677763679360429441247923439205112880504283551864531864802970735511487436962194700625583627091346666393906783193673910767441333671673490361932056002273697760661319203660382092459252052314111548582931955497153161017393406627059987742319661490697631885926620915679824251551275626884706510787952992313440628496484137437121918723488694772486589945729497255516917150874043919100673136370120074147391011091052924445636980692365993305176289593085892800044355742595400924851400635253332663934955052785639200942800271830423337990404091496236778684960067947334648846853667180689689335935827994560409434731287406987984413943257030301762635775607192033471637136006601495894786273308194541495460583477369036445421016214507938746596120810084487550846042588454022387156298062334847696882278588591415805792597812877762173562291444214567981229486576886638788236629967212519425429495464243692257113671314179168891405098607946610688792380275043951235114195000416267337364637340491456120953853534840861562549331995236182353823565568456227005142657612111827735722041254322571013200742487149242366238858129950079616871973146520397996216039002289332699446255862504697760992138635501742361203134349383495518737965354926594606483952388955391131618421503688634235934611079222151500500394089411273843542837002369955530703398356737345583854316903462781277894554216238363843227102910785887394250795640737042295976376397026890947687836578577223082355221020458614412507390818975810216394015087508201724860153883191261440280134079134091516031868599169415513804231326904423347532718551395330781942869394066629472875249921125900495996592297203108015107132272397552333313717852747840755789094805020018097633346163308812986020026532259544248594968410050033813704757048642882994101980026819886661020386533683279208721597389229152717919863482075443004749283712759655659380946831174076612014080714828363213571304265409968168714508658445729892391984250647456791368277190858237940062412475996535603938322522729979266134181279751348677975713803151283645821508567685127949784649594601363555037166460045421199529758397448016778107454576144241752300178154913193996102443676160836600400116864063808637934529321588602150618138623671881372320274178237800444550246590265915761284291605981291456210514948818365880463049708540203014732950314747911277936493747442915498287321681283476746817315027309804067669637939673366934540142432564564557085140165023726444774615718583584578380782322834240850700675559487697140643827838083859156322647292239691764804560278996354216044757540012912679494903925307737578669369680383519871327766975905593770087192465282694935948284980781320614839894175231428601612947637439839951033212363940051421733348530037785696711745365203908633662653235111469557816111632738227791215298742722666410335882599443709389514336119426176841550129546365533021432275161664016345173282720351917911827706229782912005946645681737810027094809395226235859421849417000000990880198203943443689465064073348318168192014007415118745986166802962321413166064686328872899514791729872663322176011422234269434639107625505656333543734920678191423428981596732399913457538944459046939673308726080971312681042672540702336051299214791677882977924643635652374214021102790447046445218303023742535001183842412513823101255241042749003224610718331391653205612301837272901180481923884129425341515651947932496618246694753628723081655723405088104396318987554521985458406444872951855547832692949439167964203386861194418070023057133422967762460233502015472617000231973974101746138865166495048356461148259770291258074892527835472882501454084663052124046568387437543471643785772323898077197872402398173446513121046019497704088064660772309095261283688304465153619409666611875349477919126629854129959404681514829500888503771679952946402193607551455211900665441910653189609894669805867393187506485363888054573778671793376321894968369575521722358382437989776933356861049665725902622951182007289485251568885901255724765336409107590631306597085661751665847984227265722889706843793536692683040826601459942779799265004439358403180303237536339857506215990474149407634100838467167760280571635189411154682886934412681762125650062645961569529143054373668335638006900988607935527381604339029163568585733756162240037988388141276708412303822258909523533713757396172481150658300751052904205589589735240454721408943268962832756351259581717174725255538296350785161428545445524221031627424082120393982053309747740085138021116060567645911306079336102345245041208954219567494473397735528538399551686760356954943848815401392545345248612717864559257997552272435912054197509860213821053389910329627377807749449254289759705477605607047654756780178417124927299809199298934138813859287739041535456920371531407111207904038815708191638792017892931103623886445820293415436802980845923275945613521275740869674275528484838099131588856585518412571321968130764692563718903284477161458081921811292486367044245927913069436903070207607200061024949943383518970423507605255758535396657895020881865284156676783207302215317710115386077894481491725296139811384439276504836678751616089790953528377518249678242023558738325175055662550105871133283601352424375687063907224574666606060984046894037190807190849571866048285408472358373672240918562599394762245207574997693196131210657934710100179445177767829589668481434766744986629203352663402267428382051795259708933934618928329079409948789091847059723497853273615068965043759417447267679645687653417170627947786107418039979083800962293310210251671640397798572765155542866385387089379477681701980697529525750083080191614664855220636357927665063080789913740781407647091331703511051793110964844582404595632911022713184618321195969888764254048101499002782218433954430367644962342997374508979247601934152155134188690775483976733612048465132677338446198173109467244126986729956290838115601965487014664364360600721031279070512881285831491188690585226153637616396380472627279305327695960894889339247830108614922456172100416655887998002519699677635655159808012004084461735355816574584516466467599597645319387388916583241109952889940216626119989110224806443255410977937024564198571182975844697502319365931311923410444956175612109321964815566521371840765223891556307994348636079398862854196865285883415112886444414000531830774040057334953811109317870129220752599348366329276150285053265709684838533696192216751255960581073042415241573684310715994834265941529975488236363853373338944939906923187185340148229028113114956984222235268603463384386006690155455154430244435044571093713543414549273016372085740226063956790056505201587485079027812838893110637022941344516286318841821509046690790197656101017971759897584864812516545764332558460049345755740133504732973284007078883966392275734268639392333741978593964146904861025346024420875821343894384590091848751907406347362197992465723758657760106478370901786767847806861320387170455262453441402407793078130065212764000930792260995788108724042776646645692378368646678731613890453836250724560328155225088455536967645681943756705673703835228303697062331356019762932057584283635881614832342824815928772410372059178392727968723616666274204474185722152868342562684978858550814939104908939336524081942510094857771860654134819842703448165320286243265326043144053389234615374588754838762840033131481241539478665490218694104824829570065675054688279287758621170304296094447597316333332427715161041155089560351331673513402001844640953846449047188547436646580555945146160428560761314060120658265964206218892672443183251707291311199076012918189456810657251245925744277637395285328015566103821857081278282757031234066661920854805211810988791468577460976749653623319341795580732325386447738304687310590950973891277275302587670745479998102014158695615717482905644799076944191190067478704657381046882756195050481601171987056569631270006280758540234029259653452220601661794175114431308120264262497420701952213135118763297408504140268403990406622721527140821484402839723700329889467750064906083349958859760983273799889397126804420968299303127694922473771228075901271798627334964707930657662737233235320867096413153668350418459725627701349899740001697618991464553842876886465378034229325005809883115343852149978780551705653112962847093333310333931871988411417935665474013437000392807469897380797465851301123722356911070676228378387687629932037055470002141080092470332048452271667292803542750759257117094086880367093602608779993855610738361760217762325068384688950311810869746257568927455432799332958202455333710823143745055168486199944954480009657340176091352025798335503254639298905742379133888128821722363905975124143383123123398286300121225681381092830872309567145438304706581429384586609158884059222384609737912361181312062819489509444199637449709899869417024390425584828451910651855389110194303799533638615208703155638713148190341463461227593410467123458010083438458607695983697991254347076212348094132296868797224756147860360355668152884751973984278952613467421220100647472365842592846147939656265146578513817907465594781288369518274990777515175141320305066258074154382026727648215788658480928191897446483498972086510140089711585192859098421186515926237532484292018320445164640586444722289553965218958509864559754732843287823054552042080838326685154854800132353938178176896586040917385224098010904005825942688850197625709603089307818822586165578237379781245257942859694604604217309309671512671654495864127603537923258639458587514512541207766907803098828659872505357359338663384429305280149004317066148776482303165663390757264200184671461025725950081964922243603166935118002332619600240772554287248978469614153025829463964796032310329239276639456018073718250011053655188062311350054004429006459961117764609512772131633951856248566958075698398710373721930905491286754887072271415639162960971387390579129953543935647296811922874792081054155108247639894169951186690370571321502034416158199046410333203630648940042124109479745658625650972330195694478984081091745740212910395183580864398228670618395226091580667462835253045636866703351921765883867691464336391686920540558950296480327160478741441093881788038580161817900750540194189989012935030212157530394398100411147532665192163498893641826544940001199157592847621969889602306105999076333966400317744166509342758889862799071995798576145117678846681337471006730624955484540329840571352098096205441233869791158412141081844222299590713059447945809855763306735525387718434477440350870702983815155929241610670337247622313592214142563924497534900731992892151450448111001830244952886309445835788926707644319802140227705570969256937643452733118914228616660288509354645510719608539425287848777662243244780777891678146291003527536208137727538559495447028043302692865488280935580233239278611556847206447516577551171630176870463171891154858630098068585791051820552043661535277933339186389819377569970273266672768422553500324200917596968453070829516026564170804681909156903811491059547301184178655925547047079548671523598386899520093062535637669766688708166624867205344594823381817382328958656973404296383476151748367850434740038787830413316254532193219483846357578444541238868556371216283619049337274469465977799358101125059166157312832574051729476686008963828088284278037441172069255458170023990559661128044497454542145986460405142239703496280469753382939303346088881264757260887994124436271544686803271981255051712439732422936754701189870604393138694955856874789814521106344276679247302235097122207472485952969283723837505437825502613583924690125258064085217211205824760691324633180309386100318138220705915220680963907525870193678758476171604776796862146991655583557056065602650691900382020222312860960861598501890532792661617353589803996174305787602384423527307667501494052610002683131674598128628206252115793730633425707498106611467004039546119881701694552260821352375889829806932913807976294316774088531324152042650233632880101008352253985729311520540431778756554267164787761514707327340745566981729261943355943244162982048026393741639952066668557195858348982553038199031318254517787874402573010807881606943057794571042354469667848918214807845190160055127653178710663173456481734947724857523346812150795915064489103767115607666868925139651157730063384675008878347089958270915870788554818163517976362399307417614948673048185726745053041658033376868933161909100786830392409838097111570203326146931583282115233467205037167707756858952894337679058232829626191975983616167339505755546025959670629641067638431445151141671012643331147615776521990752235607377450348415115742630606881000408962032474265756641770922791979148035193059800539221764686420056047414325846557281559236919292448258496038662589880243962448114463475177599532642042883508170881965441136810990918324091797443651344746262480410568584628257401764360585817997988625716546189342695971158960839858878472034759587702993006828778167955331047816464675942478068365357032082806256054503977498974101225980591373290037071903119661025477761529159551167237415421834116313145575375008696320936951422859780552146520317086357566491973467782826123592394105707106414519967861395873134805194690011589996477717673921059033772337093186347038342169638516993085314072184582386675767302081754903382792468818614041442745747847660388443746013516980111996573580278766758581915730473654049561132668661970238848692921701058192745411569734378476329843461047748749037017180520516020050318736824312212209201477427670437230886705129523939279344905530910697029606393756162271283948299196048807084989236676928052794938852179590848723233379451241700543681976453585966316457403663862679451601257532359765516795998733707411355620421678220559549265237236200602723984524490981775775190285098498357059007371170017866589630825443195935999926130535070433703999199038508944232078906162975212575010528935087685692328902420444369639257137429339719446178301178105409870868504884497161339188617825252070724154693802834978871355199455434971156947193932945728690815310793332688171863342587585874956020497943489161482040211789444632887865497469801813056130192495228741865984550985442068284030859488664322519777572055934764382378463319638888463572205548270405205321290718914852062678626107509709323717964118605802855733793500896418559234318642228451970964850902932105936201906522443365135690151745590269351114760708354721743264237624024841345982848415883756111328850629422133487100451571558541505542887581317562350823764121437776770073939527381924037236754164707681091213871562926600812693460507056707553809913987760258395628574180312122624099969814982168925532714012768781795269358125762887540642437414127661264356125720138346200016863365934360390210562376529002796842111350375295316516420703617423534717743472876560067513502408495190698400404119288239901005647222663278387322428563358481203530869486660559764212016989450281202679014108869800676660664061931528991460633152443343766405706259443021602867560620080860547636745426430374075409522176282334107511067720272451396985745303139087977092966515436038156276414279410620361807321933609789041595939379405770492432900921144913931893497716646069551467598842790752542366851426680899735811168623227950480021812165487633472793514848050627320245847196090582078257539190622527263114788688045001618856288584818666178738408095953999524255311680966042280504567524573993722371876107686838752251055566188025950334280037764255661905556279403027439395450124051603923353431379678513690529047170316938195417620937087441927260846691633200183893441182517945984327466591981908906115452272354374680445846172011538662511892940440413352843770922418758715284649987857682611974513769650545002998494180307819804326431622546088176850465158296703269698386324928998127675218977264275153208622197805789288034325504451786622929560325831165231941834277467627542806711169316872673549687816632611503778737183391654499883108525510441472328417371344331144997853413491129237291734375719627139179222426919681036985995422746230907130865415523377791219370846811494177533977697154615736910017558215552963963302133890008476620288484796424343441086066108422920994866089276729008951012930915073758899569174869581744813189401915175068415056804603841025738563784020820369032642953456591837344731528612340601384283120526809750764398378920294047142196034905456322904348582226916590559304987377646873789411171386685332710188531455198030680434156917712730347562473886286256905464282462434458036256049692741144584292139706557286851287021408766666220460995370674884895718815789875505750296745909312778677982687027750569729160947804696783730852952640479233841737732503570095097039312903817973551521434392824349672782450464126450830287005129535168358288366163130289764995001726168197544527528484930654101130818327043457510497012137026347411185001992638995034901735016696375794989489669726596857412674939131211635622049653673125884538872429388408524753930611761049295531610814493268503399824856102926358397022144837091226508085370818202165831882781510320599393141415985189970052206050188210259233311246421240316922801185908095763597371034951610229590342091178656910959704546254893108767476589940292207986596894435120208654932546018194189613503054005474966711872688559818274406799665456180996750162392801212363320760141314480141750314434492128226702192994506061447819217815852614034044653611811813429398866431832571120467261125889434606915791098968210706875399637818768112787126588909266507927878940097642907576767631249647480719286398363767458852689407162530792181033789750398368781569991381696852149076328347645810274785450764909598214113573109484750477405661866994186622326322325537160224386671830108470912491216017781358045487066983581058398786503345620165792212476433784335848328227984799719289742747310850811003292020265356094340537659861342416956481574613480033216144676151216132451861852543650496131030921954877178870680024899792235046685082975396359194855718272406416405092314615478297323539889873350459432564378784302103964959453077680661605707173377784319827153064844244262605998997652218122283804917256809964084850274543221163791466165040272409096438459801076155505766765014399898761350912188220282041814504007079424925301333345470584241899815683015070875405996050286445536409406788756820570590391690524975625865604718410775535301908974075414257333883611795760423044949880738228319738187470310966330596942705204003146101881279046824817601768889258590171368464079682108298632355003012927304522468534856180879432722251097463946920499897201281199989307589621279006493772016318836907407826453589427589773499004266189915984852053024053938108307323114582463760310382853737835982338807709150699726779224356601640215314746009505470675579826763253984270095050781108177258187457371094571785365851971256420021871722754741524828487260009727192800921713063546118134938689501258129426794600560829085064169832584463371064001496179548998627591427669121976553166301537597473392407107797236526919728776544607712497284757038519947590882835896488137400462805099262693841090993167198449958677074518459473341043566321053513681751869314707541101971257214519659152317676772711850655815014471529435934744415020244290877507182628331625743733575515081375354998887554796903695983083901747370727644888459121005923322755312898008617799458713554927910994952581022535547577240648680997994268570174215003058941218016987166840167743972873429900997686326758460600168243597015060956659295936888300544356709739764015398426015154494870399711629042500697975735286598062892840740634882257387651164316543971441405681388436620716065453604582750378735114015623846914949428198129766761288521591013267845880713033206026418197026630083242384908354436602512460061775672160316253478778567335147894238940926290156392483061204891673069506849672552777425592849441470219293933871855445639687091955312137738467250022812534150601946733555931545770572645536424889532230961298886479406503668056673638458815778534559914934743580521172104736768719904470170932685182291521179917858594708902396023956944938983779476447685170475637721819521473671576770629745647895480391219245718999523475113274500685796279946447102460868172027531752195175949920431773417341510719641256721207152026008259392901773682778285556936537026772292348359424486458958442922789045105540605485237691685060904511535860383362986039389752270659382212377206097051661466361447650595418325327756392312924755459857375490915617219449882217297119571784415462460943417312808487594425343430612043700423711499159834571826987391519888480565157543223477494345313287672480404234377099196922130151653977242482982939613726589194474607636294345266685692961518798861892901353140641955786652127154201815239879726536960099771776895372519500560574473980053314438499318739417510326937181445768021230550646846767652894893232187968167037796834330902564643878912394929903575455258653413532746594947197426755261677344680120554546529185879397012952613464174024209846241861637273459419993437939429240641989062756021085221033361687916537534196211465984253510045658610793468295740635430458670444147390027401716642928820172060185215347736801050265506354579045835954834767466141904612810438897274358442977954350121077956024061404878385716021372976509977419567901722617490992324021157609980739330539950960371822808110761703941651591760026985071675742702632771321068141242183887805387008916099028505895016654322091319858785481039770675064571725080272789155780031961749657315937296774274606616253657201048769121465902292744002467876840901919615048309714936006956976159714113870177951034250267050387128921346105850806532264824682049923058684556430659142351547523262176378966265991008437496843629663866193885728660986573111629570866299021066679168819408849622726879503053240851011348025066057145889576995555903555438301395331302082695668247452100297261794379116884347892366050483364325693039068684830260115772739016768254076602569764328975053478600344844052739304231475266961544669000744631581072110455777489117222365510909100878651145083605124142588775135039597706708684765480646904055994124835991800870076170408939098868387083465221191045356180607845119107824019875343540980059992180257986362808472656958302523925809043501521032869115470634794072056173844750923628654245741106147008770433410115286408853182379293665945955627044074373070125066596038263666620635993486402992569732328656901683890238445052707643041982137112566059368822617780210424292064412186080289099003931308377629566481977223717327794643300208083491945203362915172770686834486915009352392853379935192404366683815965703207637123722746244592589677667107940968482496247964152771512054694541931949874402829546384661800659717681994234444580485891941497916997909055792881220056775929276129547559117442828696903220559550645082328179535740701276610612077714055682889063155616698436634683291990557453292472016041371699499446021971823541668989936068065528646492999382545413329132089535357821665551186768788703063097440791044625625587657242501251298847417859380257601718455623919921332021054482515814674117080883482204768352595437143043380658513105228921292904706136272300751785132500879319791410979480875805423422621769641110303831313069690078065371187406457206207887973902781004512794762150764291556116532682312389500510707906496487718006024155057158219860352409123831710618122887096995369121776643009339088766103434916043495284913893678013225489991986835747750420010946149909678282569727107185355059888133290072845611671872356092731856048605773707367602650674304982579535545170967797972320049258872864548211799998349672086721956803130030468837915315350909271703592613701394723740991312065678455552977060062321327237375931826706996796708329276537846323172883926365104125430171394862241720296155005673143628685929314342091844367742532515969043695924281012116047917701148236628528193805395705778965684131049892160725380183850241368726641135854355662799124917565507629672787002629488305299365863163034974689017632138846131489425780936889228043005852130060843822514343997842682184307476662235891420116431632769094575137787232446251120293653589195063151195492451780748995659840410949594220685396664203382271059390023657913336551125391211774180778295917753289953819822485493811750697785873173544359215422771577111352011373475264404555315496930149031262462790509475930016519998814772157428227534108010229521678217588050975114011645064779395088988761504270809327910445531571137096245072705090938479958733878490901415617852432693067809359235137091080873972174340660393978164660102823196856532686391522585769734212032706322907558051062576120235586325729369116085118664022985714323354386524305524032446495765187684662080194962736587364643057244182223482293569110153723766842401620030535599864432120775630747770067041964350654653617782822645903262933122268816135238009227024947930800105536295628134644324751814526887839409752127596170585436626402593124582112830371051531662122515584264104676634873336541379234320259766937970368568659107371179851353756035612187516172698428712010619220266300720896658702520025898530574500976726180912326108754680777265469660359713479554524089415382227915160721520831318926738614006407938769140530003098294963095517119609013287579378076329896667096092572258368350371858654676595827848288832926424605137536946242029862855016652971068194938216583183730134833548090217377196637670981936117027095861230256392523679595664534465757213943647889140030358425825588945152256957864627314036495017013342272919114997879711680922703495987772710411356847641995807737409820683795075368942157423685269254051191712320044261802780763281665817783506081028353687401313743890104075253288676227900380981594665438449960624710718915834255461139866959132940704222241726367457139546605319671807847187646369795122915475590168117983321320878933727193560440679700262970939617488766242901221140552960629411006532783437382439540196747464561109799100428567734278244066088886824346427903916197612908728403097461198218864742189203519567798896786568405013629757820274637741746918604954076413077893918892328344820721236644872821244837688800049989545474896221642470625988523965835969913687648890796779405949321891481883480751603444444023329676376273136719931531653167558751496815429579134179096751394536387113203174826639644416880963287531340078265695757265930044407306806658392052209606852642318347338336962257078447182338425486222013676713710209842374651696461220210980519033687156276224264214999844706596949240342956061910398089848313380191131849444325570931357040486433854503119654508202231002285622153327019446932005482241797063856870872549083436651331806491479361600010559764041201069990456990332379326193181156271302664692340340857090800759282285639975532653030901974436982143405433823972355995302974807476629580677316831097310484077532315034592924036417103718774980299817037232743336634196258391399974734719397058979280163414987128040743482779934290230827924431428846803361022308889509252703760111697848909272227113299936250761788429763089198646260362419271857595806203605816835297693912330600216509868436051901149516736587752656220410775839017625015145171208881704523289539605317158844393131226992956390351749337270527890744906163891506754442248327217908182920560858600285493872145687140612518804325029020272216932773730040087093049885009888518831659274203682211452240057812936894959694821771863974423495472475073107589908320882093003939273974602205621980118158298545186688475543976492201911207703791949189350948922943795461383872159325639430459546446854050559866391924466827094152512538894114690912767010270499114096011503383366154121368932404911632348376210885870574002509743640771434814494966257829581004917047341067430352663888072973314751072978944573846403093995383653580026457351513886909738414052399535168446479281002013005227647573388294804056175680920112520512629607604472590693113055408227102964587656940121184739542110158922637792017942973601594169059839423880218035869314641176235004589968764972692025018777642844621417706803016808501435207113939839214308282554484849946400196227696842835822983246005760288939356750903034847494122555248314342961088618626105767758126893822152937974940805097657128369646023054787237950598223850455826744439998010959923323960412328202454950828033549267222542673121080185357218211178311271313834806652533760297443830606098099212675002019376511541651283478843845478435546679921521889836703863261230928883426929309279377368171577462331707352974800758047062654521985628013344168482169210020281743870736164110172663788959796298120638660293414180834833841982292098828699685913686983942125909324631043210235903275162951141734631319609540098351683629753396405538187031255916025168525201058905093410665876398421696595601016355957484464108501042500371561862354566290158049975703578182565925504552991054427871266530028007839748423707175205270630790396848963537687549348297805318812986667064409493187163753060879001046610541581524280534151093573180272414613840659435160200136989425478664957007793421559879599368928163138171668305235239691354961417501196333470195645307287627912265584979424929809489248683734208509231536068068173860734753144710024181733772377814173067427087133136964351016333107897988684163907149707538209472377051482902523998816487422330228253664202963670899864762130225357952711607047732224172472723180636596523520999992364229728775039020916573541174304831099566612306790100849874158360129493879245848693407135010151585661996612856891347039974415534134325957422756421883011366550825837946886728045595943513133405640997966369358966597803286932357329248422741384478071064788937678924677013520614052725895010397409909670017794696628792537631877574908559312489338132071060626718027405451357505448617309684182444521645177518863523959419647956150206107240936882819578567727609032926676728739983669004890688490992703443648246386229265260692097139588796632714693765984139199262118536540226416363006116460715934129164644812110211558759535086694534592640150846231143395902070846013835852350088544730461297615601823545757023386167934163466473620728499739983346230022305051810210891973033952313299443334140548447947715064226669499810938376430336216216309896113157001177723714923327604630913202885015646169472608897021201215758807529594914475989864284597738287239123616896093992091766617287175877984074736248773881496757987060809572876676714285217220075871433466335860059300125181166590398776836134845245799995002834171291730643367057163242625358432759984895053607715345539049706367235024634929580065639013166440291524035499566277699657830835895948624615005271022462900612116981387047649570543679281556632038237849751664505431107523437902774489282209561218895044773313206075374953071377845950964831602487553790968436858421312535448193091192276933594458992362025781572845617630534127669504458957566637545987510777359827934255212266505738481177719961565058686383920548981351107497016230451919955087877720018580973834762529666877714244697002349673303150471735807232944982484665148002543861034502671609839647649640005014648779192446090424083776486077391699885843655593035381247185693264679140736243883130585689015417433428263848835915418863286287163988665561285728361020776909313130801843735437706548488854277421993422868262421363019077292405967432290436985085081526542797495832848255221325377836014037531159585933651167445978310213661792688980716799539933138255883403149433478288334734659164310539026005009658970409509116329887071662315387581885006554541478940269315650874288973166710898180702393511597080746914183372491414845572649955856685902558519967891602801792336562992380201710932214419852496958762631291685158602391984006473032166710915738348430089854688492056722623236225848305315998219367078826100692963860623447801542213049117581086456752945881777376200486951162337006510539639892152045169377342183001587082167585378621525662097242169808636002629111232481132810463623307491730738881764336368951403549084528820206193096687749880460017549344532104893827746214488498293103424038827389469992322792587947130323187278439589007249461785260687023404169500540183120597812787166252399479325199516860217746506625414481037705904651527203993800716188603626458815434088601873853955323918549734394978892403715600420344757503699082729974027540168722110342085897973099433346896199024458575748170788237848550870400885483275231359942316929717302501250791870381018663636381309089970688448730465985823648877463605992248375919924988555624142497897086770146812241288083685067928041476797989035093194707424546445437476059907429807213810925404935052430786606651834354290742091556245596467803030790730591943507150401249636378047334244236046059913243706398907147215329189552389871169854446957707425215622911404893488082799369091182157921204922730787645961918502393794186231895270913752313159737766465187259843768041338135654449418487609573499122660946402638812390244412561286073191257926938055518103211215891822272802317096644362595791525938499986527208660558140289409179167693065596188005870820833682557146247075093592512748642553683343915412715450574640515825360112111659873936212838676307075813951589735475836134665820943604377848965038896519409382197348789028823078040810021684720136946151989412232963986140814755979262029951948121567146455300103759942670793040129958745955658634514554189867435392968180468188728969141086398065916411878520195344374281584637613414444902896207521683101590031965185130844411009510599731121026507595572157921973493047660817952632514455423787356044896808712100136228610186744886022157513055094536169630482139953055197304109091267676701169571640328490272760707885440149668193531020241692788592764882353368377663657609173234784051107430295419234830223530006115967198794904571793958201290105980268024704412998022965070925436422209245121445483850606300339456926751762964732055894811134226680260685535145705181544659803500547127422026202983592521897631286769642763059444024869090461734210961257994934832049733973633264088774482843632925399416160991013909978866601627717025185392733748071177232774695079462082842140500882281896820115160769557167504351631003849433100840339238630153495406167183447077915126221065776009507348681193967182143634013405064338117948681046537060459283128920943824083916485221220737679738888177176493950930492349507363020824025939958293281989960065690194762357184948924357134902449617454568961256025794000176363980700166281414807076960173661049660597948416645463716952225330522475359218196488175996380777887827265321229170376492648924924029269607441817248507850082446622853126298759854515513085548065700991798581671360251813294161809664565077612527487957530814807966139059098327784311201779453764659285838796232668868590390249710205311743734576806133082143259318600855328010031187865014060509474737681139304512454331350860717013900876923060840381131401430120533489702086838873415987716137006370596744545951890371879236881544752895085945705664087504607662268249616461418976935928135668601509896180142983582135656119965683539814571011309600462862846872992739052849147707313248624254856049394529759753801135834859340210744778728730860774840986965940025974378206685140462100319941012788795951622209962506836692256035942200437663925870370433977015544691964686197217230953680262529379265103023793728492487261403058402047402719573021468931366024632883139195722305431172792008296571626746052226333332723918251292645450756898986209265202438882204329206663331146527201588765768263651520315018768584978350876143514390442893766889082965804665949260279634885063373088319413142921252187895309158686032135890539020757959941240426064808850080119015826518531844549354130049859409192513189862095115204102396781498718557532794318652616825773012510555927845031887023375509301425596486668539584742213447635036520937564598865068236871215415460533183171262342778804711444597270305586029715705062021201758755202655455583635142954310151973245179010751032597703495661213175164827377121462342281133219690552330469388868706424499009459461903535417581396585981922758951854841801990630260271892695993497040552806207262198606506743571751938280191805934638938634451651165296347833778591378665882407402054840038717514391953028420526512811857544490732359438233257816896633522906002781515306187101899245206769557858418245477443196736626872749427917043369792859578560272219629988496383938643788163143535003832338839719258159500851508014847066153804917852411805525848944709960389125561095496547641498411864588932758292463584032835467761732049084724336313246077747202919855002855185074076041594593447450608186280093714373175361871077972626061072794349065991375905374490410029634476863839804200662565546883529748519010496081361455037663137880650851532465198390101591148772069780159348016345416549417152733160885103505014791050120070895188827489888266846743554137451919016071806563909601460246744391470247374767710266324505140027672975810700449955969130722465989478427015154787660886894383045041899837648090290720908806263274997291100721570163067070459677023743902150316076285466721393784265756039624001303167703092583992604724157585703763914055280518223657570512209219047600149414407706972740347389948226866366953067885016077501247547646708324684389979071611912651140196891597792962291868618433729603314253329892687967137804714751939728099148507005636862372524296770876704732435780066282260323695004706811127540299000080370817543703503389868200826365004558778014766824264441333659459010287005489642212050574538419638937645982983620298852243585450174803723069567260365381307300681861881867621830894000733157457305230529362507509972776254708353519071369839818288274446023891778614312507877699268337602346041222468732006967007155025168633659650978522374318243543551213802687725368742851497598822419254721238896494422164724402908913247433932722801470825601722782374706388235227516701325179092137340855389253160039772144131762974626747578108511463503594170922191467161730599926090166077265752405663237756774608355168337113201910134124404590091492333866982620809760413549089018438989331246620851065082912265176888391451478057132409030451074626842819208049672032348519687189272844198275036773626032586490353547194238991181430167565299432398842794758771468233828363876229535852352497817820693542399910038271337599337796781042756891578933847931747599451018115342486873664981510456739297550084939539642054692511676746729203867976201536282701861850096451987370518135215282629377741301775984869799665865443130339571780997948318714099288731206971895727105365700341982116693965913887374060270068871478442982547167165502130782245370822888992990789490979712507943151411881486738341559044744419395284752263896192403079681924718220557753909078612332746792806151883696686899953568656374946342501968269148232768905425182064263437071837473934469549724149581995038757621481228952835646899852768789551063477720120026665989600008547607673418080855016290889871291086570168874259149126658120532922124926669007189130732700701985861676446308158652803989349526388776983439242720490696124980042004735755741447309750174526548668640432803094194791204942392723284230025278047856373595730460649368149073024612568067850948925231941664971646568926494282637575772026306886195562001175502892126638885528631213187659237760500352362719588258320365764583543602619390247488611128552370460565140773712057198264896520082098671152076095897098192729437044531121152616578686030705016459774447819483464493155861170489921385727195220788912361132582860973993338595759001544307853316105885848978270663717643442695462847153205370473218109318385664829388809578472740696679347325674277536524093938516726553198112210140965369349288439980158785857480806232663364299030365502879228387946228407502888903877040518210352586541642225817172921719423576844084635886157145956035153021873216670878518744810670922206838812400158626450870593871443966115519328941511705027966277970670423188646533813675877116885602571999539681363469304444984595934800843394877224718198002703602311985232072834548825461072864252902385232282785821046992123175636677062968477597901950031689595651493759607515509651235699345966774548449928176714339213362407634558072466449114987879801318577161022784121691887332723631104605426597477468349113193471356101710278634840908269713989178337768618506012188816807618324473546815481240058925123439930984485184437768953671318455929098228735334671273587489245436768576621387455133502056160556990583799140071485232476265756081306501438259507190941989438010904791087171695797797704757868549655708957574232662238830307265889714429818898486807915980592280916967225166512273745184850027638568638494596578039058330595017737686282717894434437767263260932718821154556752831590253613190746045277463205823634134634723427837785401865210343180973441026909262102529874765262305154131760758382239873170272774065379980125535106008070825203477117767061896205321915859058950253101800511092023352292979928437536949129232309386038941341901097089745343211225208912355789985079810753341079824903919926441328241248888084804549851416523122036997921944852229817002042947462931251859192210437756202376403054205841848035457063705889968552986691812293428589674486327569624001927929624426120594351522093206144023810890252005791536094064306753351185861829013534035833280546104944638428916308821420569592150544793220216696678612623387692172413135662356072040055341934412850125800293586081326666600849743158756694374525951087188226412920954519888120679442893011392517484655774948246461455800880422800153865933805618011160120276523905937221332695634897689465923657777745891004141085364056106312364856548293686803643186092714304788317821292492405133754048569132818328002218279679015713018663536867454374407542237717394710170856287657639522106466553951553799672088886694663691361231839930377774161641383743289990221487809567053555214656911879997811069592437417535118753472069232074999451673602061859590194618409475841483556185759580629300631617567375139612469493044115218024315395176317116067711692749680425289681109974325905213021873857473407065718909553737957515003552412167373354351744743490371676010892182397572137782897182735535195948433245054152329960494427487775846577572611147003353139258854554804047191467709014017297193107408394411540031418281775424641107363636049881717904683261174301805060808403365325469681293525714660921118457796099350787281407081395997138377252160406840789351622886720283501140484671000925845975603143649926756360241254003286222080607685301287880253708090754674780202217690848494342002042166861783013645409305128034682804465186211650741138768271125413220400754158770829975048795765940210123566828390671385303173155384697074992398938037590231418747876435073759118749894625141601225648509559713785350988805686082574567613305531752779201178618710313196820654483829623857071837620850766047741215062483063605435377429736730479514449265524777436172814021545760729462932845450075978093137971980565774811844546536777139233745064066419335466217317730748929464928759009498088408740754399634010725511382387498755018877078942646257919383143496631651707731971323022574531887637900225576409065212494211032679496052463704075687313579083986677257716209168879343981118396597620114565670503875019808972186357913819206334881063173239600376730599273934592133985461990162047864084312648458771001135905140387387530690745898087121670747471493947726995128032910642206336746586513559314117719854153691755279768696698240501827836568139301279062847329266608515091309450833215563726803269063373742138273758822802127435940392940386035349097258513789508022353269474610082478250651685514062790814016177755404677933890670751901663783427177714934198200604112222844600582288486292661443231352554317818308319150733170925139893769070746521017425469987636455695276520454890918027606342532928051438781733443030148267227308146369098586794503229571827128029838424858326538751888064959728858154078547406773987421853302234605902290201995301609488284227430832236230900060713946564045038077457689044293295216687754716898937811633737377623944407389016825611531690197671001952212739774761928294614831936087602509915425499968083939370357756110278688000893578304343607435198428341660721904609854671898187393876789884789518711715736875222801170724377360235490984103865236722842815568984387048130499708211798812300794751448762314836308508601689915809609980435061320932961048442621901311171575442966634423051532808895496124561580221143684208954124106530383719018727263592184772341520753343471628670255798589233797941596754294340179161901679933195107289912133785095031167086664216132084174707388572881428260560768671653483941276681882030582891372800185587437156759044252436657873696030808347337198605348338331310542191034688162641260793318062128916855892303866852233421424286919769417838285421186682104758143752852685061871872602259195540008800353717866907977614724106795206815015758345255661860743408664452889356341874369678450111535715315251617987652109508582799773376482463368983761123705927480307719900508392164981340276190520013067420332056329816124626895047572552176082356487454802949480915753004818413273223180285395354153283144799530540092499523151750736528709730608289958214782647552335569360268729626558618512684317094376577876864130605604215232736251389182303454137320545053274389141310669628847288821567484415654097638739159417510069094934409895740027619759408932024273130726773155330466719683919497316323962381388320829992736036466962380224554260804845086126276091070539356042807737621780023813428390533723128798794532922308998668243716657286949006944743616137963923815750260228352186386931188179031437129866487411344963965316631246929877883581813277852134579110704730944001672543599396437800073657562200826501796524176047049871880244698519783865930629902429401763921201860502920765447149249035032014557774474211192369697982322584144444004864958947965580460388239751420757417277052664123813683596973473731339945193113554247264954068845406758236126173340197953849682283945008028833954680296562067455412873934521830396686706752344832922358633827798767633586069179258282933693510136615134245114467741706689570268924140008672516647759919852781298177284881205351231203799358890957518275853033096093994859073862524847054191864640846259068754565539573375388993899292555993394552784526262878971723084083177511339159417334809791835005341549936751189724768101070352606737944359644756284898931590537745494089936129421360642500266015965290092233408889799213695749660073817651103458777894614292502993100865729624894268018745087787926993247248333283092010976350208314386168805626661657817021573992796451478598226096468019373508201838177800542678635340703811204415576037318007081811387446392287947657164169529605550233936005168686058100294222288825074972119709017804136578535400548074282285185757580878889128935028136426334093452609095940454892048377807148446513762237244167600470706849614474829397353935678847400627693401474322820798431616968695617686683147806390980614283709882776404451465419871425005119714940695735546681332554691768271198257724897658715227292057488984646624949928304688641374386956749200030530163745962277009651958573561234470451732221106372910015044821352630033947737346778924618626650545522929603352197256420524036987537014468464695010314203478186964264976766054558026532139545827960138281006724341986133348416705256534854238535530869917101133267873609980972881047326188800844255449668806469836192763025721963370138832863803751638886326847767016615424136585990406488183341722949040005792652344958882221842553298782066978283586138250028518605666942157539432634976757425966374329811519299286544239199643152693991035101534880232383608186575490284963269296449439599735271531832668147712821110692733176547384635954525416459833525335353152063264110529259903172644532071222047848515399483815935086786138493789907905812097979766190270614197464585261821069550521979080856355875185846026999998875815427835821112262783138542917142220489208097795875362687058404539331392075793710682916748179244920592382896093764737507688343283841849791388351898279759176824756407009307878598773540086426141863966864610780637471523745167924418692135485028887283088753071522038636049517214119731853720537809209842505711493409628857100406729301277458493445458045719992627197132472840766662523022464835447100897532882005551961170089468148662039193397267255196828011652487548280985111451090953182719086028312767027920800955865636191759223579322303248491679636104057801764223430801481148720036977987892826227971937430645666108973754149594800600949612463928602746324570713851157160557410508216949211377629488168876553126419780677219279378938344802545480452201373208241466224036466701807631113021961158768624919291571319485264861768499145663539845720278745877722359888941417019637553857138639588297120279599576665672607462107461737498753625491210038719621010332441971516272321239202824728552512158402409400133631094747071510020236393097903307704635816960932966867548463291200386940261989384909711017039335522957778408481338473279048595867146091554636574420275147331201958268860934047373498618613643112279747866196193201383572422185686141532270082366434916063955564838794358796947718061788156654163323949360857728838272486850270615213577852501707542319486011246704282946452580854184604623434729893617449251765701375651695108013791875573176053800597889418795153255024463099637658725302292297281937290363599071637062529881252070614737565523156306951941195616312977609579348902309112404746771813324751012073235381307281038311379757838384810984164416580716292249184943899122058135972051034554338888281770517323018875776783204141773253174293204044252181683721272723895318080416840096258059683160167674001951143449406145479306193788492824679710562106254845057774564351343278444338867804164287346896141386257345538865394210846982217488489017624232907945250372009104898011011150197895876165460977826368138784812294781661039835629970107211230209060841338399899459371636848501773389594681590335005164783830906695743109108911883804957444219581757166305383768021536980372634867045370618124393742906829872944432273973410348517769426287500517716180287667804280478328845962374803781264597867004523342126733401851052741217630151662934283968410977352243862423747337668979850453750662608436938893307815251080418833848338944213064986922411074735694327094154614295459405805997356119053502063326604578929544860428972109703377319361164919576523211347959611208251895980093570572983698637599668923522694671719628014791636238892918747626816850506968796931860873742843003819532413679533857953462170413533098293335677598791948655153709090508525870534760533700679753340877944116807309146153030247752228233539635029630699356706294638175633172521207365237017599258221358348488759007248329293912329182485718333923185657128209365413345795550697737188692043384521022249299126363524239001159440150437960687067223560308534969104403612072892804535669259456645304943966901127837289932810818950245823330116120425242521685300993961097260626584338335081054872825744417328458811994739853783076432733771707079731428809036711831290440786710143572758212556900651692851452997706414869181179133344352200025048591575393623474102962420861428617535375272030989456089079782249258768048285555814861825764359819006956483327334316975072606205539657296389324508259998071873792941314946932963122274883800974912118752781540401659514157122824647723275131548943454863033279248947721899163267838686257231742270560839153847626594355877169777360163865961387253161358138983973196289157014607983443121650226031624374689631443909952433546041841851999354368583365497060505155084299317167309181917086705311277417939215756757762633880381083309556259115667377425485575483485067848995361492739795497247679049212117324535013721506188952455858407176261096413674461914881206833947942452711440737942195276805258926961275333214439025801805278692826046919810460332414272878719433519173331075301466972475404822605434550085301749442166986176155313347013471351955425781630133738473509158957520908655569442663493714669222982888699180396740122863647018120193032715026022766660313636325324858542216542568905612590618970970323934228321980353292264214726835815490730334531159781714319483042011482450188848074002800779505621789343353910647662804840598174498023656291061015992873856721135312545856889509296876570841856801112001136959490504011371248720554228799391710051384997586270937971560044224978648364087011172083947155723390901090816260501627469033408597232864321751241286566258735139125491424664451151759511965473217601512284563019812885664380657507963323938247453365274938707193944595965773261644903506395877238416254734689599508729176699459383613226252786817010349453654513585637914166314006726695731103228299399369441509243550919862160457564628983103578564287152159895561542213687525434357830846867285205341558110806118031407668540558315005977429090008102248080725727479151742079987414603136863678090486560039657332706183261610254074337938239946515967566681980539140454143937018772858687212183807517489182522217342573885439356014851727305139599920126640964340658394139113102720021671559607691666604399590223184218229809036285442991372895169127575840055949424771085428491458109449498035760935934821219623070148259574085619046877908992303624585407947631404564193340872976345755286866362994499502510563773762354280720977288585370068414495002901780375232621747394521440709098095269009955857420466800992163051933098184893521068649095487998698747840141442879643642386995285205726834706306479586701502877185846530629711417189798784667722604204419237809103760695630552071392294734222147790919931215557352612034331138520133486449970675010760924006297968458004614016557347654184443642706423380473242959249804453041377432136302336646880580595111344660446688846829297633161773044755182478828116714216122480427642424954347221699640254098048315428567602223334628790346449849226959842966817612244761460033841198290398345420697328889023906155873041851340553708288931001843285452570479490555353766314323329359548121388086034168742658835480477813135329937520647353077031030324698904797950459031626878192552295822353363852415492342782498145202617294768217695657213133845071714362821332187004550242629116053811361757073604246389431629018188574407563264504275184044958215096317630863369591968388235044290347377889593863617907486197218516991696881591129901254191357448503349149442369400680426388996849893063182549647641239832413871995898990663185193804753467079306516304459637299471967868166725066007662288823572946740908917480414532737058666889409960104952009999962883711095247743431816355190672303232108281335968259573784352897850690694998494377691072811504966719525018938016556011205780586138400350039394122505993053990861249900779109840339445116752271166597725137435118135649144849534261937280361015197937240287810360724459482956092049963802791464379717321299865263732064549646042299798925782160871911218414049767104382868750755358445759013623454107657654366235232458408988788523176710502258432890458906487521069727018913138517542804769426815151094783360083871786740458307425985240933346485204258055050536115804789056645749116001898326592583975626604492217647781171741014401914460477532079604155320055814111358060152231894097343420179829673676998571070143520533240097673443891030066378226642715427024455975669394228943003648684518938968853195572421081341168512725771436113206821021860837676993849423891179552284368443020885816615273319714621408639284595773604707870215881274635681047460041838235874360631348768793269995292534774615168503716821172324306611241912971041938753662911424583012185518508193026392665445544451574821995888235361514170515287983744043874607103980782714594024199000842456982850413669373393811266128377084103583778191268462413636100869234064667314453694059798015015243382293531290579363806233311987635646185168437146979319252476809586610129090591357872835304301000538825773305283382922094176932409777360685202276924564522966415798052233786004483332891110266639451174090361656873978769291084227974278686378952541177555322070785918081213915838581213715317122742341630977936683642999431436799224832949183454131082399019221288237560477872023385562784356880809412289505817704989495147533553553365188759116017434422387868687852934616630925340609713000417250346124033958449043848934583677554626891974592472401154062719012440056801557001111680032340443030984462608075206325175084062148310368418163862410328002492991527362241286101588021808465724395579196655423160993547431713592971932591556676589973757003568117747141866773265335326765850786589886505720176696300180210028645604677476257906697668038169412273928897786238875803004830545328914092358543648956110136101835498898568333659535236999842752064296180797493127938174736415876282025156805096710373681919636348843403937995095058785604300702214217896455197583696208052651355063596857340076922788358804887124647041850915268450088808633599367657630066302380941373067038824979478730977234694986990914921549440475265829250111323874811629496537737202349218183980914273326794157766376799247145952047335956383795930016836238096890176534735373103547481458495283925041495872240347498827290354353369266350501038780242904703820820076254747781604468169863685900407867542361009750841701288488694770694636084653051444664585643273047827600753487302990249954141141989306043325612435560098107817214257337384010004846340540997928258400503359172518105883151891855658387662830366955573893419869152491140725576062976830140449911524531804473213086983366920611330520899011647246429172672745050094853046843060578628759378693818411516568760627261367685451897576841462603812388870799776802144524390224070539735419096443510650970841227325329995328279391414960041702156294267901498886775302777536101634899570701347266962488709229883722997903548364403956751233927687860247448464867013782671658603510712651130865105731083488124680610275853484107703843437197835384544541994061842771972159569419004688864056148880488391448276055852370718716337759746053238920982590461058337239080495097124648977126126920186898609295094612319356683757454220113457953785570106103099886015153984138686913387618786676680549999346926042311914598290434696731700919166697715500163342894002086197417103215394855086144437576472462582991405106419098494911890500712915666564550239257988195286175276227096128228349817347386806684654247456860184088741393949625127572120238122532988256459991687951046478918121405181364903712087237421003116835004306777824761498378296884011399822416903317247471929128600492969531059112445894635963771843510388451116482395212153832880755574878189205315771188999017856595391770706431132207555729328386178647197262731572871467949191583223114252158549913165048060762483001450828461438044332582250203999208818754469613025594311078287795315511880369473792767772234523991500329094897549941287335924453831600562069750671610673513498342354398208441943608596994572354038561595723572634402744148606813653494233891230603575911620934587979702055545850736207337886452173137658066893293739421579611102754441254669194379999763966003318658630367502194669949139471968504187100001809691857378175581267029274619890250785519414984187289967341160109800973722136166682667612803744005796430819785269882328820109539740687169438150815622748070797460690929826158642068963045965346667951405804352368057530430789112050730418316182248818345920743300021112742770295298352988669425379033405144168522672331896423241091597618180852531005366706964430374971285034348855159575529779438434696520420085277706961197835147426089804581359859200350639529854209204147162760017355513525810532626165727417464972825507244485354664332748224794632830546182657053234148018568314022560783335054882172908394544086736103812471016648199240473864167654143660586168564810056322153928059793206295907407291595335602789244662063127591010603147922192866183740524553975765168610913935570853402784998666544105792409535474196841947123398217622659099299743963104538697069645241330834981880642359386347838675955595761281629183641559811122655845273237702876042571164964863167988173838376016193666683703462178986638903302353099362234868920352733205385002246773397864273464643261485687730507695900290256557477806133653175654113986087471569253557325953956487882476577779175740004731134545930388757692479512303569388353802047621970877372363224215015654506912428684704915382758699994530966610007783590698501141864930629966788096006127566348353852649384261517232304865519852862062210277499071912109852153395717782674867498681359451959559534263133820989343649364768576876363813660622686708110236255861394223382967615410886736274677225627577628777606496024143842694435251310639322690926349175296880300154865252312812179545307504824660772906502365865179757372510562587119690644247786262197694690705664675796017817548420845645138029392354893956056595521652028059949929623614414884679539303845551772634174104871679453171133692959048190681990490071648019527612951338674580405160546545039447134682303587970558199385189267100862013710048933659801801904583858719752265127345365643987454165327422621174956236798487782277095867689805307327625961915137359882917712119438108310136197490900556159376418560144117740696619783930486324048237661622847744291632199448857388311143721338394358864512776712327163672425247351207976774623161194497427381886977441572896436807028896368625436206187069777867024382096080279403994480578549974739289640968230975898990376964588555941523895461165660237215082823261704066606846028816280315204421043658600876569658431182967898436270107737413967607311930683607503659195488015661183890132226368235277438547812610573090287024289866299810136018561725751409068602251653062395256521795455237077296997115554192067551518729066204484676875858967607924114532898076441897339095201461205903357976094213863296867719185250959395347542886609188435803390186726309572713755289556523025551126248197348891690506160936290951666523138206486002911074980816879313578569635669575906892602730657737624088802930353199980150794455968724672504403278218599611675799129186549029952605239694485718632762620141342524592125181458348828403985541370388234130854304809627152450673306351702584082926570160431618380105372225432912560441563004571947622131245513796973819514447163733329076074788373824586854479021794510454147002007269523099985528205764249784281882922893046638442483361166787893339471662839525802243334059199277630253770625966329659575014175107353899349305784532799065750995430386403158978946287741151346274314315474996506054625142572940548060898776612449560768279660908154303460350301032758857406938544915568297468937846276903984662844379509370205581194845181565638158642355303049228178122230849192671815446285982119359614711577665884758965393104069686193834835507861604570674814424160712662264537100795734561692121230156139873413935166056968853024707654283221828480865576475967720698220301297661999162997274800967880469543525320586815162799222787282417455109602615578159178406800959971177938317986529207212141756811069418596146398569223188295705216955304306137328452391511914387673222730221834228152594181249654983106383893567699103208842302745222606874217664478887774322716038795464190091567133006600580085225402611614379926672140442898652662727329549916744322751301657031729770450018103059271625365898168067497974080226003571261210292927347580504329529439701718569014861864160351525040113470039672740614049870856367799286723181473463500851584076183098830468093338768670112318877163032304537387477847643044948979284631137800151602528612008089984469053835030215965216181490891034110366821870579089009548786344917053922578753709159470424290883023176185827980817226363530482482043688496431655573070047498874185283436908864492616750199086135231470327033057209038444481007799758864862251106394397962246163521258130458922373956155151837596950190154013340723367763367777096729793318523893574464463230648664723061380155326635536815019376623902889514007594059828428278399804355450479711125577187213738572591741091673082560846974917960748219672905181555870997951065160172277121545022770798871001595756661720813880905144057255884270569495056779331490197579418193058427141115183281894846096212108099262457674552037854183067787041813698336797648102280503343980748080919582902474179727103881551974367316636253620091064491117889320864417815147716961964950346753184044911154196446757472838908648722808698514709520069073470472110901456726576530686011630047732314724020029471277546804357226298964455509171175086118677444668821315507246025147242784965380479415694956797305570150888135569458851627975708515172821883609331361211407554591080776544012014244246885129328957480776595799254012279338633091298608873608046896059651309844888925633061671118262831502782942442163341872211934654497185816065731615162863917621838199989559819499515578984967036173526064931065641180001392042439628243541813067470661611008014808177414097779027804680832655581751457775833202268809098366817755563452249354536274654370929703026901700761308270706823442754841557181193508794923788457937510721649369931143370177790098366775556468326803708870479272799959915005351701424865457983470128828355264243130230081241617935026548305156108136510597107012692267697880246141003934330461547443478358205435015619060645147438254239625560526306496097405893675079286501260091223592330868599441344675040839181335647071969025345163705697122459811406052377062414894767235986607591432231258202503982764634026100367567868781254749846315393681242425888463513695637914173721237580104204690078410598933895076763733668640003385290762265314037824079495679628071139820597199759025163987428240449217979075172779864586067407563527551734034322001695988184408423055119731356274516201146203218181977409446013977925980088149511148780401816424086920281157484817049711178275229319306033145401908036891878172146110829713837878088550724812562955679333240433112427215364001902886389518774496209409755266213789495930699393687253581247082239329410535088217448693526797377671560734797616733532099579776551075836272082057391392285769345232107758655844495941764857860140402847765040852418142995975697195459046683548987044771916258582171006788731471504389321945867400951135552176658655593201071002464552888583816293703307917805745497616628903300788413998317572867229593789383234892867821302737647648662174836047890028279260039667001392582504083149173498368524822051488702587548187616448852329456784179114924081616710400355775243696789922052606344735629001811961326426909137189557536757388331985831477120605980838096143295068431136241774890768887547946352567304383584918544003524364643375519164216019082477508978100471150138560549599416017186833148684451348177512639698545535148977205198791491361576816132416411807893637431970571657843286111669870075723538938234656334043128479787037061103300676260083326292486880671176023718768095752132468028702031114191743863704396233590338023802171917665943837658093549252326674570211957848753037213601476908871671864358501076111026964645158259539980505249208332950306076138257746675502177758170286222118934003962754535276808818471547994903224060873983133203573105469370620171688671877084934481046858893039080973160189606344441700240737202045247057635756075312949933433342349986589929285635103381197361341285152838763801648822114818095770683173598977187032141308121588801653491929311816816301578738485701498011640909591257398257388143198973064100899415645282871963148887678654848591871994820950978517343841864564962865163647581545940703647888553114834592797641985992268683208651020895421476862296771599711140261749548870522663492044084364131076166970155719292676138435962017000341667339037819385933895374690011805016609583315182552682228675043525981991606286950212407168657788413908897104413739577651575792622361269493121455902735660123777853665173292837457169937737993951455347921922786368373378865498236814111237154351217122215615606625280940952007272158067922356223421351130357168287170181484473639422552587905255557893660747093764468624422493101916405507644546749756679337311896182731907570551344357253615438907189738503420554543259793542355824224938416119694189549182515462249602757200412998211234257958203740798226361951240780262358153949261862298046320514990051430946107787564699383568546439254128858344944390986609441266166167990581956010815392138561186879940360330701207692809047277181157557776906252580848336774627931449776266479744426232207617874353591935033624568524894606741792637815584824986237029412573438557387595799997124352583187963620141895380946030860871609974647400309152402736298398273994183249060164444002633874756845963722224141410225611173249504526006854313042978626083100947263992623574110579342862429300733608724494805171688999634936131072204871305056398181898333266429447564970213626420669582658635064066070560607049611603134229094204395303410581102026980667201021549468960013345721473779525149679251993630730983104598351595367221326636375993326407648017074797426208390109239957133189996041583928301732151135863988887068265477001836423000086131421706572526237290854952064893882288068932436897456572510746773942280935830122131252851466741945082842091237638254655296964313548420383992897718365546362431553942182401504135417326277752016959179404725746742050975448932223114638983855658903672408991694663107023940295499652320752482898931408864413877849257521896723304212389894602483152648575061543494303667813075275015201809917170011645309601890550271182197932075942521934885115327270666725447265034287451022259630161700410247174958153059678819811383328380984787696696557973993273356420950286905093834093052137887689038924933345198212371738490614114002163089459782031390350798679586259517094568421573357795041440986909572191849236964969158845852575782609079756451312784157699139891202697962622217184141228076082177843328290936578095255675188564366595287680700824859621161968112741674356665700463067739614532757586358555214751468638963029029633828517439582573838381275441107026892717107931405599689370424497844618642679221109960708255926287217143514755097135393985736583069932684405892737986136628628031894699886518321737692412891341241177728910957906263375535934547110807879323372237260811980568579565925445779159245565465483368660323962570950594947221300266200951964510431461666599230354970343602444266387820914593752497642358355091551504568555149523053617578308093483430294156174195482677840710667343671133170104996863791082551692812582890194779656857273389477205287407710945275856771859800479042414268840287638856133991981889617116932576773580928166577458068265422669375640055248755141163628971033519120745486564439600939764049683819247914838117993856885992329727018177248502664598003708062636066822310781052759498493485208083862754372983923289402390314265112387529484899895425421042671316694102106273413034753007092382817665767500341794791872925992477976067590263292556822670160945523409515285433672218045242822144386766476141154554154847700214779646804996289186908165007510846964184833912483617721418884185027999507390569672110436543644474200291645702099407217264049941374982200912848367189347393938682103436034876491252513233760744573005083443977702912869822860286929060571181350198933515729165426658987321809222528263222192616706266540431148702802614401587335995643259112766614902552781567142258850459141291068764020171380634328715113384487840999002278001704653874048769154729588170959887780518704570596735702308773166246542872926022480814092429285773037586277902802505181973699671763771135571117191641279469088132249948248782740572269062729184006601811598899493931526315450667743105866704396004222570023452184162127060408070226200869471856994349702735729153807782379244051612517191111508241716074510283340698023543965786294066144077098489791772705978621114489995337094394379978883054008743734191123313911462904646741885511268854755286431905715187391992711267017676102153136270681406921417817045779932629829001959191246004099149485357408741793283813676086524957890338356476721834449247522305982977674015939677689156956653903655783158623110692457173561489972414774667710845548047450667152786134667908935966672338142868077110506327525629691635239097491792105006562663358709428974966966346181539799018657346758522166747932896784311767377001643951149951238084286274551081565787774080639720593203252699141130685230536702283233398033692794554630368617088338044857238307603890765265947368601123064365607139416367867751992568427503097940937829535984303461496961399285079011701195305498666499269661338651882736368554722986730970820244605143444350248175222760307428621576571233943183139397584838354015146523500608718112606256144360496094643718835135654643613486754952493345854389227869744444277811687162228603357529449451990393673139228913289462749803737915747621608916342990959120999825485477153731634667471450299198352246418836413157309232313463859677131796856217654582108165006434741345101966822581166886361544834351113962755045022650107623457081396650813646352452027005016294536227151163166481391180439268338980171581368214044217633915370867711995784443155337947733012254979711915358806886081595819485696857078190741896788881502800196238614381299363625414328847807770196612835419608278266963423408160383065068985834350683815380439792433026011455391138964058602390972539435098174759592049793713014675718945233592374620059230839128636465221206036728293439577127304018657783602346400385289890954821085500678099110490746150700521279960589073414354968974947626153183895838445054847272494477802232955804674574261443407032860784925997105346634470447064134788172492402039148755443677977719824903494190333941279122446241211949938452547806137049872569832008559054783954231166645834330680182355898533104700995931889019978205825118111479471743132569712353323876479092028615550236183636770789563544039235805803340134842407639664231333254839005854679516373692783003102137528794328347150988061839094764063545976962737746510874482865251038741582898514791699964333820412112201795611523738604067206683802771354989411838234953305662944671326464303303573322245256681199359857309333196164177769399452648358257541353185865712067904679046382494416571570590790594953161393658064437335411043186544515171166217934827694662283120768858551608755804208549770752953277226291426833886628978920210909843823652527020339989239158115788304682858097022613348843519875888714591552488030920236577970148693436970799631692460710860237556107819043585191927100563762670294312977747473645716819192090764092169782060914263620350145717768674121346292795080440079448035480087721368847366681895467585598529937839461868370551398906866210112250596195391140265417708407864265934684932984148646060081486192298544670476578971014914560690910315832492687178136584581810361257176483112605633714068332891454966520041985560196005669947366515191768031502598534209331058919376911255997045060995004206834186946091077721425806807464035743447729482760142671237239451796591562137627134408408453692451557111891569502293550507600866318407211425403129879045798041686512878343290668296513330155592885204207656532585578732849959892281713487286210017769692879036045331377686522750126197000825721044360782355671227912687102020213843140320141580303685471944356387760258230638745122594100176931121805177130596058348878760575366168158547774351136018084207762028318469350786916861610075825802166078516339653112903079214584298477847250787118475107389791325414729233319234126364910242769189906303229192699535443939909223350827006243663533929165562567365449990711155471208090052137450805726106533156064539175849377970908845871722497911459479337854239303143094502307299861533228525146807997347130236938901710125297858949915835478782854021714556322103465187650651719179257873038462606786316840027051571618433523741055938412531167844270495969446780238928988195224193635961850760852560304342893991796089521454475031005402852297411104452704164867869540197804273042311362162139166996909651400897007292305057701071040997990903260618588636802804540895702262404417272362727881192214637585653467568535345521239605683254135144010016186393047465540424216090859537299288424903975438987397404852765547976075917938766933690881749399296270387069252594652179838656580888851252557293321821992738505701462649679094709282292324980460561103698013877850868116957405702280880750391060155142992226375590622504318782726695507114518967444060494957186174870415206697235186491805114642178192423597987223300705222337492879701130955282240366158567199828648983678421483293049979190442097407685732980624764568084227797787171254910833983563856583637045087180731362439649002416389480222334376106911689076904180604856695235731344235515040959258851076829557547821027062628591514315231684811441418545954520823517761946668978078162476900182357988564677009666159095805171801298922864217742120250466204988409293811361606800635939593036273749342157499457321407976856193646442712820762422366032116646717627546339990186647574091805462017375437603462802453598522277249797119752854005182491627761496009147499740547051085536040453659062621012187768712712982307240045406752556023727588113170154758430914235373287086946029600947490568492282472215978642841267268812138990117180480724237287053311100830028925952432487047407805249710516259535747746632433868246613352596451313668251648795841507029112427884510356479231853421403133937337153319001615088140732231998088125673870983166507650255248399593153131759402919554772010251331480008550234281104667639604541011527562781361019488560521412811632704747859844861561557542978463598115244499992573736570935459705575424992116700684380078401212071004427375699568543506294533446633516998549268528405005344796209678429718757728386674813846210715684325066477090611326801559130682108947530704794975005225921417047382368463268269492333034856356609894604207574225902635811381667322828126373942984673339156814389466318009651338640017450351322752299339593945263286330481135929163573586792484043375959343821870441428972894827119432876116009331438059738589087408784473836378448660935127520808667150167264062073145509667450810896801722030231285659336046283435577371565089372565386793257790431184384379511882973424483558085779646632880032279944811428759377312432403208246194001640932368747297072326782865591533449623904880382840639027954402846322945244222935290777428001593478134248218010807931401311339015002499001705752657339048106105293646312821150893172010035186347472526258411390953468671717860011127691251446153426727239391588662201143786400757827466508909629692246205838942446462647745583328731380663844749623043353891367080511578165750883579463903410629916007752616815617350531897027425904356519946275247422635793577448446579487011713650996781504520248432382181159269957530487607220721107767881572171345371138249627567812158456068535168253720022481983412883307241604530148028304068047879647749082422634673982410094770153547219180287267713699520630011779045327993629599456086219901888759721700498613921826905216250740526863230757870818291594279992084878738448560381776240388437674249653856909961742413375203798101735259688326205383557096870104556844281610530932879252495178537427434452168137690478652159731324493688068499502918961641914068517914980567246673030536302756384653726353657887788571426351317063479451438703714794637227135585499019002249478168532035668930990747717229215540101825667535567701343120085293733669152456805597411710488821107934814370238029904212998126648963244128099795458674279685965479358853878149378549990979604817235055526526535235862927410312571524054466274644681019730344199002240787508188981661785124932744361236782793161782099250850835104967385244377352801415348355245048701291906113098111196244995042797854278162786735984760323524561677198659935151699754862554731300328356735490093428072865045253370356959549595016912508089930653096885413697708189609098145574164653479110900939463158147972137119504131130974200238060021510865820700483011957643044643310632226962248404254040838584455966570188361148434398397347233790697794536768675258010197191390300894973967406969754486143679949198356387175577496681042086216640762270116273325979505527304136110164094700954089059980631812560679166670249366744314944526943460057918524619244914500087357983501883023297766016283521018893354191708013139114127738488117066220673686391301767531101915044279026669292858207085725427558380718369596862796321646167002040281578896322652283087803783107214731456890955225877181531654586253809854238334815330731949273589702385965215829890854876173622068614526257577619106884287776799975030169665856155141611290059517124277758539951961102798624926889481117279996470070324989358224368119218351292857408384067953018966098109985146968774544600089789287189267046628592581965539650425311097100032693300758761767709491840287690787067779690515785946739221457588600192822156557441274557735724047081807484919847049034409223214033830168915743262486005565664796860061303531113803931336069864761721043585639068178194707539905857319595270202060669866333409311151504332671161559118569946853048557792625905555828563350681252889250932143806067194318777342570832073198837114482982024304780649086637671457382428392421674720453733905039426426295524119124499643963543454594612326674446040078035950011897308443857940642332784776792873203970325947502621473792859629986819338260754591189148882289355269140151160487508925328727784191731822552500957599650310056001877469917290094500517373038659428931604916287641555297699084342859364244883619412848531492682821675957914339628993159418583091090075773939069359278176530933925912871525745528802659405487890493696972212597194815772077650843809265550518134759308732780062893402507222307167261395287556967198827617010109605775492728559800673759399053736831680064725194244963057858457109773834194147661481581344367451346100154856376937117675257114686575093523602963666809211134745887189421847033142147134526020235845151417887120625448532230308972174811789355405973606994682396217568023473079108070270147641471588887848653103482872437799400064967033595510432559625567240481984814745011469035009193353907979998463944289008818459810176760280352027095248270612203002992923618081626505936961946640626968935183779488391249848048878183469331019345559422296942642428454789474051295705087702398481953129473077186348919711209166626420962512969841184226206174073895664511842720266926236531131613472782015978368979813145689574962465847545988927779698607363558525351888392470225592883276534371014541876811918722433051831549910224473736809262876620678670220612426861614378986370262169600096492731331131600345168561384334737319244325306267797692396299725338974118746228941450610987293993788141766907064153256994668647756702657042919584272271226165793747892943302907715256944567915340418951587711590216165903451067035825590124194574471089584655247119407186607925468738642092197901257988470046612611222724845237886573981227688972617587660746480799605797882162913752650090861800652312710394881964197601506884018311254845855439728430057063815856725768939983769408656738092486073121941256322482498799621789311336208343634677225947433362363311224611646181360372729792082394945872194771617517642770798312823493211326024396193169859549441262889723177034444974078221425778462679989734488523522945291864334860843370078768141771750133406758283220885473798792373517848484301432526636086911037489526817282505420286986913459089745538603218040641374195695597627748277120526898276445266977450978097008768269732788297808976103766217273346876614840363722073855276085800607954678910656354680511119018387430244493485166889167114781003392780937571520702910062001401822472270917712401743281487778941166109118029504036692498377877398279899654180673565413141337207739355902598659642979813314915241586274587659050227820414787083601359336304556774098825407551423998298850138361186435805927307015807943004470597376587253504036405116849234884687174726335638806196510985968496496291090213922318135310693947820200243098293699259008664126297660993364558882412638336932404229887863890459466905184297248692823074392319879777927033904145770194342574059388738464177341695953378792588896261737400512994733770936113396688584842576728103774029593750159158921757643214802508596325610910289803314033771242258458568128399857640546517547387573842221207229103201015414493609945835692333410967276018887380335876045316488122561150164905138284342289282405498382936026684668796121801967726721211233575888915012444485790615954729769445028573210928646684744382782608613075124609735681554197331863776075541099335693643401118613904876106976009372330533828947686497665682816829873164243533781306985354053696972887374019612674596585323179227467177403912941670538608358771350424868383938829235644902771358460696097182619360065588080180854580439365633021018490359537778697259337543268986915635184667644737906216217036579218849723243620609470403096078022280998792031764750438499125669600986715242753230892347751453403555778515435899104785776819208536814934173466095575161705386566323270077549889712015958630954883289052445067107976953082942102922121452908209309377017732674438837579373600219300573406655833446800238984370953409922324099871675780726063410889012835438481784932668243950781107590650581928024492525745193317473963282885886019256596422099336784414704126877923514335033824640547150827797850441837708878625871882493267227486467593059384041048555761334882924761826029688294353366673896090220663936406699223564882546738207302722172123857948457406026497825408082878662408451617147287339398195785272020771442488260213615462338944466583171794377927096629654892176032124990872619863589440684522879809070575196448293381209566979055381301194150877621355775329273972448780130172467038338973539142011313423658287071561867020507733989483306428745033268814635243590534660544836042705865891431796084722077484105345221207761455304195325871734704828116923186149864535727362495806061154731298828823827524487812238827582024932634756513136485509747444054825392090451067255117062705720813955557401070371082115720112292328769326725309719889179685139492675902707337865117298553408863963117681148137659910591761397078236918092502050379921785018257175956054311500691944597138584219973600987512437646735574845984582372113825759559367540651423626767409159097675438965097943922947866082443118383230262616204032439102613648292633608217980894861730978952386140072324190649653510836115538163165704364174739898190732707715666584313128779983154105745084517326057151840962139287231706462568875917767546193418493121895865294108238586602265428720663450949635890075035904920586951836899755912504858179919970065409716218227445520273130963289289168157396084041710022431470023244896481170491917027243847423208268290347386716033513617623486366192744189556558553773179574983290775305319841922361031754300055921949233717688206073699884633070384990598084620932836301081418751805802106637693574312400163278066743878379953640010136693126499864316420222746752647890268970216491772722600374823426330490149931271530288578132793565867758304925564004718613519037358448864524615313568656780750840171370958023736432626055770063070102511225614094066829438158533740397845566717150164542692281617798781907026421290092024798864108026611910625493946211943972852384661310365789568798015105002896239467931387461212258039815454427773662205427168391259070877440628888800269045745035187638005493484101985386634812633765502128117975865611127715082138483431911613506079201290001414704030154346379226923316558467938407888287963906437473752099342346014815198433748480827983921480934347698265653517924025458784157830349921802943449957441249711530406847777302320154603438526522284435125998464169591810280229873969693938208690359739201440373649944907563770691949935438070315221640736075011591081504962012965869990644943520021314738346867064873144209868742549563826342930936845328110705200271221921094474445972182018929928953037096002200314457519027008604566649598725295192761607045879901880813395398379409964544641421349152287678516534951059523343054772993515868807458678880389477949621871799264338402869084765066122393079472671044944387547198464756838020350337714234186546232196897755069182581933715755483567442499254395077780656871980770846876242133371459254032705294866012438246634806079457641015202230031110511793307235513962705615845361847308486224855800926783031411630937576195436603851771162429402110250003428087595621335589793701730180672010344854281940334649395011378419316365017713481987464245334336453660324989287156120908910240885869740635794815351684330790930519910429965259901606468578921864180053756951189500101607438549609402467333233946769832846204145240411417666566759023966884626756356958796736052367463544155113200321498051474431692189994455706917193599170733388554247932025189997486985681979570639428950189971620388790612992122033717766615097307815962243479339927926686027094887489918892091117934412929263270117652492407536551355291314049461976532114570321530760723969358604772782470816029771151195123397496362866790604576793359166026956537946401673820770488356605421613743358049522137974396697437455764907426244203048701417856934566250106242542702839021138422336128484165843031308709872608796751045079988656076600607364970591165745446482610834018789539411572960211943659174847656331128388144550998829924489482096810689668527144741862794774759687365502060776730069284928774851179434256498608706147677499874698235966411805566303195533790510922750175165393477655081537934074927610054602262961421395086836189317801518968739534094165073147039061967346227346348618230679502676565385242837652213037387712160310617559133313382464929775507151717590799912646200106815965365615861707937057736719247157763068775205385049045172928405741011855325714894733190399497865322489975135762871589932656661245187012516489132127250904098499198728525051238968353895125653735083884635981767214062145221875759726702754665419130739257529732256358303594205956589567528449617502163520249754453561691598181215008356534067491957014831402489694239027786474139464039221746984420549634017587522506388194586007799855306344957549337183761513297470469986128727778473694817695505398797884735216899848890425443410557920415062037647822049391902098712211383747167334498102435382390118066078460653544730272204309492047439197552296398673418446790835457183806007400431945000432034393695673292526024106069691020773058877039420132853267544538416499297273394340226606211770051243899472433874748451214498284231299592562336664118835068045680670495251292332197518979131065845892593669788049721232171287700994911520435370166258130175994812204829586050214875642395870012924155771022574131368721974226955381807830652434725599580212463639771138375212448432295368904976902279039994607762272552898663637669337659258991980709216832959293550306349543992695521671760451526447339670607409445788461389997873087630453641787213859686506727242769445911268046690607230553626394896987887177909068877840049390014609652592233829557655742950595133929738804811795237608003729120155148388478636972325527200183660219954389781611443415423397253021050281833545455866250686290282857665088482004919810170868876978292310037978023824047360792430731057172342656292561128123999153483717156723289633981385292927495764543507512849620124497253911837208525378292509614085344292959243800656288737831779893043014302635754680218815711586015023639807331757001201572746016671766416033476529066972635713535042110822294542590250520718371073756375154338501150251298060605549312364480357049827247481944897211777883938037197744185638620323223733233566560651970589127949078054722992562785307514232177114410824905731171008728547439327544234371870491984635232102696542295016440880508361532180995755515789614294250965183717776845986671971289052430551776254040196598336181050589139901062827186987810931684526548536367536655952407409394256858261329743949964804064855110714962529813669917694408699384575853541617237904692906303559002665120160281492138496955851545320652538524278552612761670441420289177809974843192016692157364125535375220730414673216827596545233977651658222910738244133829903873605739022182960497363514441044056786998115785552576976799861087609810681677727081876584933990152609170898916500437529822606354897264531934490464835805761212786174770433056945272085504127271441126088160964961889369891851997977731318604782357051178816045887838318819039592899212562671521099641505986166601136024497754843459112928956183228582762966279714522171322167184230569401789554408993219434617231040411752228561349210100132318498961999305343112540645225522087003681880033625346651029874169594900288442110901266368877276350244756327990117196046156980370445500290952519177057098297497980732082279596596603423798288282263144390584525151317038792586124031285745071604556556781596691652146801764916121928633527039509400017072512600042927340072250736712999475723118843552390529475107122941955504019977814380535446032314597270193102241207965525640031396966500960702932566204179660348386560730451814278260433804975186339653381905567853136054357145246016536932847536607657350021601272247015148418348518596973041955849104355873489687014252471135832706615905500010468826325840459088448527067101712135479126846468029129486630395053516756234128758618569430053941259386471061805142239216487833290260490644450045892921534352048687736877392467066915111815151420895981418460728348940342938021923335470568444103000051816609319333797353833818333670656386539222330483206523981721870789271359975064164644495363869701347307965443653318520952606145164186813398684214210019050513204037220634352746978677253486272201087215494223985295994681793842703359948404702158862735377453570188381361321648835790719983582819657854960281166902359557838755502197204441067086824709585076243406815184971357216070028980519464175807910770605239769597328094227640834971635700451712753967681463213544502022931267520206693301152960786299002230023494011414194596753364699448328298249323765084194442332792555422536865251658672460009676162880185228550898518370037550491881478970394786306770870352942935721803038596387138218541664121002886091581827639562301730573921852940585880514786862765779754298310826237410511862556887859883093652828810833223419938642071419367625167315803033202599725477457158392266584525870304965798527707550568637795549786468838043123680002614001330969015781154986259992496244202449565935517343283826674851981091300882378133520109835218160893397683137905043551818587174058988649530576627372156937128529687731208050524659335487349126238483307676823988797009001581144919212509592643197421419841075659852824062090892057373726111020852740584995444001627440810053342754701283002175839034687126315729661229129580517732425039394938261754024062401078017952578186983111265160925427857779084947848973713652348003022223578032488864466856111255634503739860193173542195819849451269748577264173769993861235537205393536944102359855260948874422833940707620435643089411289436994348074140884611146012067427664930395430650979263404922910430482807568178095043619978051165861641240172061491429618751789683435927129430418509696692185632763855734544046367796474512136474704854398143051350395219572056617406593311353563921657839784584040434636679022559878342910882919644880591727525469489919287085787512359516124484334265067184242232939225291738310238200481003821602996295166633026933226628840309277239186923172860702716496825891339099331204988379224183145855085707098861071901641244610097118680748244663037365952262163708004514443739850238552260159753201586864729944810037949505568817725849387836931243379139437320285802715721316218528930549348566451596510706045598931618868892502807515907618686409127071912901526768331914319115555959802085559612086722042558431208352837859079868498531330472596706212220545802608155102829191873171719517418536713433539953991984919958763346595920196203877450229817277897190288782273707237868538752784194594488892958621752927642341335879425043938267586661372270241000007149824201419484116851688945065635151716694984277626978907112324932075997224638329277524326439403962726199434971210064122849657796556029155426440103124579825588901288100960696023633079789901142042919364149387411420849439044125280880017566829007459432159772229503338420800962923001064954654209232692441571981687404956596520144502957911298578698318147430138222325826515793061505238014163908644040611419514859621799567543668236451132252414751584050268452049485031487193535613119619304175886502872557352509618751062120040974138948895248788033969632332709532801998114307363937484476595882645603116937882171678866782084383896686348898477463156663302221833010828409191109518756442637308686364115165528753123213019671312069711205443644893081419833857044345300677317453587902535919253990779892088736230796254294295280451371124182698896764282751486815946086756180245219549404203970865149870415789095781156071949472159684230760296016294465570503917625482008400993662461380223704612335641887227439955405268281677302374038582857262193173009597466021900096077537350615598332485972242114500132445944473986830227791810608629133968855298869411767577190553199743519555449804748845959301376288784518709160715210046786650122871687224219734666542904415646304616426356595009622468746091729297104163040083361834628549142545032747239924889901412697961043417409593544492068096218523148542222653942614086977536299385149472542767456349865537245359238391134422876576642821816406846833537763979771101654678087467321146175645726899104560196749581936152499673438860826775095695799439661952033670541102023927046415494916986130815203368265091563829524688902569531276914884325291103152574138100687282373557892068880074076224336997444636559532973055167081789092125927301486529385960247987196123790271618536222690550642262986503742322815513321540278699369613857271485740059931853004524503071946418994511475596647455121899392212620974681129696975051146595688739635952701461851586995109088580905255683739082523721362761586581050133997574246562680193277073447084822707326597481038365294316041540454997240943062434188165348547651384292545256916510979056476446208311653704249788930629467421076276615523416085949538054622410090978620906952557308606316524175974223191526991907633266413803789982245966457796248758455747895534835805828359020616511154132898396095978078459164055237700455512736842834878189482793790040762653401859951587216726751843095066221003652674104533217457317527415713180238416303590291438027205635025030780283517213812358036580963702290082676425112189607416522841232626223406274842710146348995221135747171139900881180477624472844075262334328629119699706602225704207104228399123857589790286485827185760477637723586305241204526466370775221613248305750755438816679294777622958407596747324901233601352626167714377799248297894965913285498981122376656214668602544925072901074487393088933687548329680425482813919735164676664393033284039806423287671705715047714778391698927304431324838185338652047184729339968633494715380801045894188634345515529448813343089663473184629468792199106353116579531251302001142762211994191587308168094568324844867916613176526725054941081858371077163567881543108526543066200821685178260050938657660215905449797095217634765943120919114666000528973471868623056692039972693731846969051066093239514836097176468440390141070936998925988793364844676245786431321581855892522743508581717889183105007601704899719353178975363487904022750809424864198883554752060160328717999075782754824792162851685292323577639316367262420951733771660265821948024903697101965104666921305050528164399832080200214097019444848067784478882892966447639767105995809663206324867920503411682878898902145076654865102856531032169237511393561687754647971323197848782050263331034737104095181782042037647969694537944536686053610363291255609091975144232942609525653104492220279358497664640373260868592287346685931739810544636164767776892702966011442257735331170090919448692612742379520429557905686209265367291922405893856043349055356324261966641912781478191453304252587586200547607466108922013947738997641173564684461194172284488971586883945275169236278260101509569799381327048680942975871360995433412948749983769875149150514225267907338517936179026234150590837100297595329066098553260594609507326224944927400579922676453991677681304676678792007490296706696596399509672468013186913671766908186648772824494153980388383091580617150741232458641682033297765894763018517788332060210648458799305527391501452920527178267443563772510105159104027006387290623143756094598728738591026053584816398163380302756250899842358231821861250204115646193614442300520831261663864349484482341891705808567777018046445543609766227367609246349275053291680871479301210376895761052846177222622029563113507990531031069103007761186659113569803502215822041486335391859321700580208629435047685652552637572163244886339219236386787364463578195583854260241352713148076948671132032889435513009404331404525897640011673597228099754425075715092290947543232923317695540640489580015682513672590145631248902094882762309560086455548877058278668858479928410370324099866288620663015094178761959678162103628858376228545932762268393219275525545479098253295573002359696784766934059362693550156729792744429156482451391967694927067863375471713292359476046646069296745761150373968267960470361102961422521550721342449279360341139731044669737040079646704080250925785322852069443535736156163962926330360253477571122508726113637775244810918859175199787320254754157542697927183290499368254425122205606316749402804476716422699625106135165618143453934394102923050492088821644597388817162478246750700590456569220664465535277092963020289955682416525380116002078136711278176236424155305461311422469760382825056383557222192585212676642299032604728513607963976900232496570440075934624298838239368908682939858508712513533721584509105715447221870178436339304262562859595208275640307992110012970834590524116890017640499085047279123859890061580124577445951353950479348972399896578741281479217280048419318501657139704867809930375981024909381887351561291524021078093675030498609713391412524587930676054860940734909181778068708177561086337949644117690330660309387741804805247044525713057456179928547061356141200542184145954371135020360488485275724281577825341522389138639360184181568070002656905042142078433422043978264014177916493262218626684618238129658929131639985069880152356352438198856828837607467549402635305237680046596781615238525488986907933221277605626300103004182947250370946068783388921182530465034598681531475281457190928836356735699610416343978541528132169006817961038151344464418599476585403421236179394534187307029654367098648611065917493341777468523214485589627329593078607938179953302954109434205102484823343417209150524453672424717858741411331926069193465217504120961235204679310283518355056178327198626475154674255256396211546287986315271012110531213258659489879592223105184355991372386515328750061309253275011953462993817723925095686238103544681581445371150532338263475311481848079821891738930246413417911484860137306958190592527623005025356149897155471395275589933388170587072062966404794757986290632857490086087236759591198376018582251120570693135047453994627803537315837116497316233969865476823175725606604189641400817364370652390533539499033406692381421237238651851441070340738922184572865818849851613242454466035586391453540273925613842813571231867606897707529871740874769935496631213684661556638648494319046614213999958706635040984979536247182666901911197283730641992579802232675951070030289983672054314261307514140016927601404585369676764122876337780324813902877734711421172247336776618263452591754344902158378780679671939401854595502262345525015057833191273170665609018476898254805446056448727440988552665543102861608453773397142223542139735298266605042378346250408219021471595839730981790722482840622369837071771159276218143911767361557746771858141084501313533734161315586894229557700533245973760101411639968002826917482662642728593643779057967263369452465385422019391116828437805907701336589319311559742217354427647366451650951619330012848021220100797478620723601081046010527561245133626986726013729225188420136467397611921314116748803223556361388945253649889719912976706680086251876016748153359315291247413280482179871531717300394385185383186750591623372736916839214936884033395399957415282823151621764761624647130390331266144245148423790432165832343286253834788475377658124938134615359219893197564732926893373345826315886343892932691787158294360410703227152318891899575250861756184779840803786877240877115868625737440866131038665587059545021785894031887871560788241278654812637829039198050496208683488781208398865906574928492366690225990699805691489531213486679358808362503757217995215076616690919220177417159129163528286269174051692525790763249339531104465296701019342926105945866878857492672888181885656744890641319931537691240862776400931730816329813494461433419031050169470874787732571173949773993365750925136050077881130381555866126946025553109955550793877971817927502003144694402926142882052238689996491405077455049798861820381117890675112706128679118285855366027297868119365092635172123544412357201070842355744069558116856742634710896032278915152998291431239109001361004741699046921177345705048753947550516698661092510946414920987806478372008178375195419895727798940820049327016432438569638929765301320115499838375377107082489503253202345438555148965392268539000490083189899023395105336401074896853545488733385126124217196833734360218939843126231392996611056827119185796467119952479803301597873957755416755655700113157248833893862914813154063420482461306235816981749156364570868581001611056440737720093496553618182479343449350432658520980449557167216269766253287374328916866568518017296526068376300990889771416267188050841813293694044311518572757332336721484157307860414480579206095892110273634330120367375908880848283729914291042070228482941066039419672612450990878588253873698302884674558225414188954678847817577203941930713577442326197197274130368947307850992992661407515262735637164736378399684009509513881329244361957044885852872356375984772769158123625478385670153066573323561628166930492961071024188843397559813586545313903444258759595730837210858021404744077100120957616855400554615835747224737050131609847142147594933612265357788854761182479876105339196206956936965766609531124011213251685867665109912860578543980308136030271073807802447205927357251736774951648796331321845930285054912702820970730606762230253332014762273407095168177172688522467312970369071310356586554271394166918946430815462670688769435515455185722744349518842627248298170133126184374188192468428878574668634382366696451003225853613820706756979918875802373103087950621253357126928963454062509444898842158932240774712528087550643031273643283926209602974881322105154887326443890092120175777295662906587074077950960734736458383961592007087326408188177450812706018733147112664851101384501524027508068069712516083328053008542153116241816252695939862672591691688022190644432162239517247249990008456852604388194533188093494557314603450038940439595579728882038689917540248073201624587071840416221011667415212743569415993555349634240640926968780231941393722267160431085510175176881652378716347084421272158415055696505241317388921353337124470796133436741449064010040850931974434610897670758964250898833330730908978021282081288511425259793128223701010118470359917314355307872012162937751566072914406410662396017194618841672491079178193161151198790605574531286868685615569280372474432608190883015113690746728192840553837852641797002203493536309392356882767625985415530058648531942824899516587611435755411664298012369234915190812666354457667338646718736894048120210333692393475523329361076527050216591125377942779863937256626363382204280827313396806793376256670788691350421391615425434808126018827559205117324313169216640663547285182720445129949232633233485606288078844000289276588868404193580230728097767851414915959978456305542712997016951843920917102356815834966793516182296529154038836329526784695207567502222026885773273715747240099526955541632998369578313476056741991990479962918651917938256002758216521838498653446014767330202763907003744093694595649263186341345979223367043639352018209541729508299095885818865349857753225564402523127556128055013991786235928946119565191117534667659686641120542911552399473155367625435770460512739358078075464672992843146434821461037175689135300806896844195543685542237634195794670134164280860444811565110533811977162731900147400548471555614076984847907166018160281631358877180262995716467649575201254377782316330849011394716339285320908790720082856459909363115161965613004398268195417005649335640962431376166757541841290492283178635855201117689698937128100157852473737615918985039660942074349681726366477504547870940761076549170422836046302263308651424600986615656883457656885087788154218624826945828677187379242700674356811438180398178873059569566067144173212036973481162270652316527398479572548530246730359152108835767963837816462827258219817456111448657161243010549517984540859534415114824019158063292455787823157500648882618579193054380621946548101011087324164727424594157258473545399988307496667947925030730896115076145469955520549973090500810334384228485157093680049263683570394644877988243503209144642628763304995780330852658752971024603456161109204958813419767767591322440135861180654513081760762734773178571691958224304206419271392785502416790336586890410979263979282973885154251446222320381240590272603528750250910062427997801480199368753204869896672794585668837402213362746113312987454590999078723669961168623504606217725842144398116056479216666623130681400146650601072771477811769157822493848953821770334952995001214840625237575287523926825201022902626161114048776653255919711652951334546851439288049972534694049459800414974370895296511067294084691283796124466535303193022628401692041576053206428790758311105064554236845226991462081125643272577920938915937151293914912459127925882292465095430672816852378112588832268543409903033431205720091039673258102689004774002074226779008996654236387185692845156976018786109645590360737203852547069095553979737164036818291902407026513553742027252061649543759482961465912008498786901269705666689315785065453169251950369997674819645956093634249349779286673768747155617127617847396701761931570698707765076030021910067271488656844590324303025320379316285716425076155167656507066037484259690925694823762734744792396588850351185462318958778889803084060805921280406868872464645194359059944252667993432142836007176749626594403930268697721515604446043338070560406335648759519246699670834188239226530176715648807819217528948238889935981287238410543534998476848899895319855090614017612749442179874048416073991187574855914519799757533078107485362820749582123841972031082011964309224491595657100618520228631181678625090536442131801611282028694008415916498511211365115903036538592888852754017075953695061923787980493894548410783366612462334724625920762394807587095335928491145942231839299982307976242456039947669221428545668423590364209112814485198714517916470672365672221324391640581974059612628964657800201646800693831629913214254822923292207132540562432450997386867573642172061566525779600468344898025881663202302311819141512805358934838447886247799620107785987309483496744168291978042671263774284030986472009624996987058379477897031182270687436252854148403214708726598416715898435234160436381242879617910078103832170273796313941475674275940032691720084405639486832905946513601675296375599017950963118296698870463107962106940014880199102981372161199170499203566669274852569507186723355955922000743315667012742164744657565578306787209307938455047161577825139318580648327132931348744489210338633977545575558054737238681766521614821695450542858951622431361854378011155926634724697075107796559549868668728830217653876878877431547375866134216181343099738511357071356339817361117972167096039152583787283841747003642505360750283893218297448068245248769017539586957823514968953578606780960502199912848410435578647747144804243168648481595306634257363482721652421239766651092044662670608639636368830011205277861395447682186113908687637623494638151962846336280629256055365603747307804108612447268512075950468327578663551605075134022113675020983517750131799826644466292758915517488433185416470087016707631914307351189610873526744783367044222646981042947644089658767576268962377030852413468301410994629076931409970533526771064345323011980878892951264120048947127585495889874808969557933959863361076038722046975550652630036327380125922354773228030513048337990311493422215546961097821143825008350321627918523934615383695578292674005490577451437722324176993388833804398938981286409729004722401040831856314073077971243509631619835640049085365179250240889904966616986602176760674486396834100892949973070012726873955240023252894033643515222372912540065240717703451902899725620558707783557875353364111186229098510496703854661869225463898274901995799132319980400064019283110872046769787145749523758187647793845835628338463215549878831505441780592360342558774385091632546078944096408172753481170210092359020435458327813311042134655744953729484544460820221899364925437583476878536487504443648972737661914014967787316874007873725640217342046107796599964013299753582434151758940053614779475319831704084498146312863846384841606475538140991835747781977949855347477905423136992843972149497235597443502440915475813201792509498878973411269927925423641317696240176803088266403259802304505442061588445847800748821471735988939673744375293366045590246284497646276082045688296604825891779442567431675795435426767795101468420415038460172462011595259530423002277306565765324443403253327935460985484962801469119775232573713183174462232914348567797115947412493764726444781503483491338462450162845326989477094562475604668898189122088396728942498700595270084069433751956470581479208759515171080550701065025184357535591596025568123975885229776466230116442771720217391981846899829140572308041979080292416850313632147409963493390433792086831594926957510359831026203914104027539679380016302430195917343827215663263788827797015128580950877356538653160993515382034003941167049749054325973893415427479698456556694327612571866784854340872265580719895598226476448180179693008550202303298805862489911284485785903269907143995376828934749083380713779844280991464357807122749552749363473320401932641106862130043742795805333796686945191738918574530633214987641941472420283526075720599035163446484509207433551278980270951548278021169418429671617322044525773434433407865737194848484785079420493141025784922002640852610932678024552001951350726624546125405784727969501034264926850896344357580560679916990921901425959839520946833684915875281765835941334076850029403202897061134427890956054254573779177163138872310181408505964859429157524218838703531035882332536895473744321219424205960397867033236966581222054024201079579302562880802155783301784412098881421474485591794001619244111881359325321597961529360548059136919404294607918769527302416672282807072250370044588807120692135206976164898431280897915247064331615329236862806655687184261218116540072933606462274243046912888675096977625824498756231744615085254930853142882560781118854605696280022475314632650191484831544206818452357406844597133727333000893382985660013218725367707284867405419887560140667988344326975753575271987536672271668176875876184474236920805862006946913667937885820671828009001701194494721261541665624921652946372064915517546142489035183615993357963434157882481879863366224902113844030398947835055691119533988613876572621954035936802748156254610843012126799749334120622643335723215713138528993628338514347565105895560849637423230762055284282063156556759588691086697366694371689478643492999867764868992530978896986776519749772114746965978586030636222238155142355919014696892721541609486367951841038405113293999717562271332476707586235109539152970305377018824956671858353036770036778457103580986958880284546910161067556982533111518015397039158804368933184990801321626363769599180282238221849667384858388287898214701102629348269178815270668566795467109414674291149948901995516767340916029433545769471183659680519498870407540709288728383172137873290568649257767943123718163087690135187659802849996704399342717366072543601117563648883272531435366943822036791494243930130270220973243441108752942001125046499926383519004791751376474690007204880542699515209105498837775174844404784215490798928730761602337057267430481355187121780128768192915350132495259294184077265457813613536222141257776043635319507377514840423871995491638408332924121551465654282196330386983062618348632584349817686984505213398099833111021409483778906391710060736412837940423700288925255459181784546987204827292036461850792973628617009293868348589235421602317478168404287911557538931071967770315472332133530290613827473827778889163758341968836149070372768663320163526299809668407510144006561541421553628620799101951281864995347563308680428247130936163720593287564784269621950421546654232663727632126438275463272975560698830691589089250565251185517287409015192174520350874268441573314267351421863282389485208584695925242000710476384036254230234648784694452617572062136330472329339213066609064120015213310845461186177814225739291596337285494208353077565246673191197054895091853870214842709916076062711152467416081092997628411018811560973943161790337668168534003066346059077261898524083703589237921470267413322092197040548002044701884486529171165895320247657151633040751227344653229236305520799671424526848801282996365424859174087244354920741009918481280352866612362908718200486746960744990357059836508241884467060716123434914251969530603836228846999061110582321248494502798817206524373625840717686527336944315576969791172238751968221178895588739730137708729607854190813964632199401440911223688870510947293023396467823253536949485256804654006648028829449809191962208478236209094850031312709940323780303487252907248970384882668696808314300753982459120485855570179498865132897417723217273692393600334532555702990545462391206795902454924830268313010197319703670615563098909663614221925246981209406077207786048109635756839103675789230680393731609945769038673778610970742003145647394975378243647776543295145548964611078473853830140571981292535587415558632114307368083563201456219105170221447133215767317351202272382471723808704284153681238377834543897838557178698986938679364548586853064723538589745524057841773720631940816280387396920321542135458625986459874573858402955514776094672915531504484560621211858619048534484419099268295450120049991521244480827608147640383414791762444239229787902708396052244144776211185388729564965828261721742798049985833468961302279211870256387614009509642292560325968443387640080735754776863207188990887774150766889975795040510880592531527368274336272455286032612575820475571123169302592611986447851050731690848402148498705590678500515250031708360902827842622418247363375215972103471130773337732391891629125934749850055161497167881240721980948688981398083576794536030646307511395890824438339839057398739753641846962093891625398216092469759936258880598007277796123473990506529012858153958454876756863547214192819128438136644484934526765350441785146206127347540126548951969454921960250107338290940751217698149139781770274877299238789949521698294942708689427633184495254920930346714318042517034531428227357828518382102898051415808930913263926169098701056278844805978040990947973773490849024355612538412623537326277870717694303811956238221458059070996927470092772859431620176502203590490716484804714998457902528879251302388989716698595751223171259601498275380916406785121337953516821696609873954681522806745938107528846993326967097387440630150383207996883916937293633717553358094791343784813706209235261909469091477176211407586360473999300782328266198193739265679596408960460678611686333149647368850301559001211516990568396614604509020203973703691103558054262983325210159285618106872586195261960907648970047628990796071058729551774878342466644934564714160318355645493265288272925752498278424230706788744779775025239299551541849425054326274417285973099737271609446199823079707491247348766526783070590780047891888953037644434260175013594529053121047542768811846126087763186450473284977929277853421929308935695508914625976971053674039638825605411121268851719896765338354961197968968013034820232278450730611933163731239011435532918594856231251368585970193442709054545677091356860212280889330829545614939343707371575751172512124605949838256743631287636556135820912923236378738028754792574844766369171704142112789248497887076286448547741892497515718502651465510205639939679043252253149823850921644178738848749863371215596310351392830369160463194347013448835781183644249861491242565958258783298773063689174159733101473185600655907411090608794900529516521221828135744801176520004790715835535653368733199602856801325215834882675622399812355858448073548950252232248314472721290250918445227949224044827495121026426235570023744930008345704544659237346388431186981775233992963276237294299194055608954913528766601085910521855137284354660955628491755042165374296310191533133602306510647128454686211155301837312475106403488101726489261137159686842573879841692363097435460246515762125558653498114487830973093746539172976555781971052621295615911740156839056719697157168211375119724109081508999415549115262102625163887941032855472327769947851000233440243239849761938651816408704074567161203251085474392438123252506494540649991970505398507602159506030212866587521627966891651111620406427472039760179341518167585805705313858640753162796429826767005040404302781396687488622756223566709795298967395144821797700611972108521976678474905263824445253980715105383862453594189151206030737825346142683683271533524383934628190375686875327344152987336945581059895693128774367275182009699731727538627174989626431569016723010832766880296943406524236106045126543029601507313264738109919562162806385618781549704615193954325679868247322013349082938862530191411950063671601940740482961259592857664022541835587897530297368271811395426604100557448793760180163541990582640606786636736233499072186525278568694016078095961375766810076637769020943443346332966428176634663908875156140997587131352431661937825314106489109741262722877099618154110451290152831432369445006013360828756789081118225484764378464215901200904012129702770913448638780449868488772025479325367188713447160637198876496192674453769789924384954094647329448148546249854010108653377981197941393479087591102583021396272242570441743483216533020190646921407354971948822663909016704428296762935608746634438946807380734781325819542653188615909814507625824381315031005556609648015251590472302131346362106790265636884400459358253619314036571647131586111672153253868864402815854667810115513621007517975330915482545130187592275795506134539066353561832995636269865162336478321073471935989684340632311306541460837403578000686163911982298548973217797543399327641099903258280490291541310865556901356638960072050985907711966199462064864849143170709221796189551065481553254860732358599467773590935228487606997244102439818039219662430844014738373406127609884691893950617466517834972769827797914835636211986223927072731022151485277068576488179752506718971681819688221342447382433052991887800514740821661407928574931664148040728733955016663423588689006287573944515805465923513795194780992441862152566025765190731408554902199421440747484627138604483113648846120195427770931707581621245645487329322399584996296377707049990760572728335306923024462178789091114627420222705533903218447234329859604904975759435280270502316309966100958549759166659068224006714664177891187492982590496532457524279200454564856531107824520018339189281528522846726477117491001673174225145145534764240583000702239779417300422942537401100504564477362326017100436195188327807659872491903937807210793915063543978213189257360489843535621242593953314828196506521766395118415274266864126654260935894554099257980006368598992511604018877338580045714311994318182872020327473631754234090210259892297877329965331873905004031127167659937853415830894456962230779837118367245581222546826020651989031236437940709963963672248875019943600737511844657711382357306075871042489923168406493333972881026301134010236269262049658129778510529441085301145121583977559203117837941125157763780994090295228840409511421369669112219039990881411419694951622202655549257368470246270859264181267474870535250081170330853488650153128895188810150277782070989041647984284777018011588093208709281251110884481122317853764911539401094076580169382879997893142794251906813181748377686594982889821561750870122407702040986210446688988177783527905427970815922032587565075179935496897262625246249040784607928688860290705844739950971775675693606538323693691205215531284315027215884605104678177726270073350237174173361271869832280339208553375674583332282865883239500789628169787199257611130460972877957891177387320671275048311450143649629128931504719551034060408307101135062957068407291218962154249974086863848794601918265611315567752073969033110495400489979247303948860351646194598498223012608017793247143011802594358364926455931605383029916995010876366980907199805880168847868562616124577291073947823277862843678440949195946458111841988039205280518137060963330211648463928640307105183554997495737017098360530502960529729648835081945782526333015278343668365784161207779802374674640227141410291584391712950535197853229846335540021607603646430089380384179824465030829128525210059790787334434176474086687179575160758073848821877243898393603383820079986214512923685870178188403344026551969927653527639564797732201366672635276878615536954021404717699712010118914186909258924425307834226972591135065602679544436240020023257069910641416925739383423898097928508087023832771885988649742408016535016456256137676206087685391784307368060645798629884673113157922584226532960352639355280244429721929323793001924074532781645074700670195875695488728593226311116451206726105186637193761708107110182621716772501424353653831961327919514192959148853648517472829941755150999564464321663327814446652332199210104780016877794941113861798228524654777038875410543051532426768620360527989846395994670197280807684739240281887316483077414594217774204625073557041434717143879142211742695270406788386476654505209073846623745097807862668411973446742025958067016584307688069143759321361749651557703080542121456764660959510335598604129864211338555012233788351384774316241361552127743355862234910128660922304710742143805255402326120950472478796576046046516099775554531630713827321264795832167918663622184015101746455402618758467164885812301818407067430705108028053642370668059352139844530818079964434101675994624028184723539259454347441214411682401756584542333872612368332374557796962540795786556023549701242120135741261799854753907369963190929623612148635131861188904194649434236608904347426599328360051236411322965489380010628894952951231359475309198854725333866331660202845119873411038858414580885569091968979305202003353968120107399099958154987587070380162452503257701483131711469613732149129956136856404307600398603127119372376288428096296595511131346528720514101453892763515527296496325484642117218121927460014682495387912356327412860124701515576690349329405766771649366963878022086210492140282097771753331186720436436269027090448706098797162655641834801747242258519003253334402387270823202497600985089130275395783041091933517435774842017043405254015033001919949420751005618672472520943510746566251605423940074031612401572432047554906971949532981410012198917271085961646405708560941173154081203867596787174749909896974303043463513575106103428415849350341480545866555313663848390874651291729058340659789473042921963869559136708791684821506762765229118310679245795438445320073391276636365500171909818261493107211027873049175519907474176575491492583943225584966085799922432866886103829413591033377743299257902986875921013957647461178700514253796497266491868314636391142436800401555760834138137351114537043308755272267416740855415321893398138483171703744402676593720442756951379207234400495129755243955016871235734630829581450889249359055740842757207941112742250351651060771502551772228740640797788030924429519303554646558574477790950791103143879558173123466905479195294263290505510065930925032415993787422057989779404247740285087399179186692982164717280914582740121507882372616162254987239208064508216608521164754666770277803796317960632067106986047526712453041391819255096150936522815588971630499639007599314585647120501013454711413202205930561985707539770173820153482801661267803867281360956424798391379028923397477176439778270273923737024072097349196643836088353104696957490361522138096754666043546541896415883370999528066857745463103747281893535617672047350484971303384903160128246198876318218162842245510510156634595135975822851892228758760643862867256152281175694047431636319708443510028848248540332847199399176100207922269774596730443972070118427989182534073258804467777739405744005868406226900098868871046560831311783296760814316279686327328424174297206975586218658125636964373110833605696771545524855367258602652430825380376792742680503223519187325945637058505728333576493845931723114668154373659827474992822134011580854730003014396904463247470450681019303098063713486904458514354296380347252078160417022815534529092677066397078783215658181307689322394341506500305057903681183335212673602806095150272795698600486911623762282385802113714915223850539567492900461270111232189969229678698695530970213120868765722654132544527333109998406883233361203472166582027506037083665893772174673128241528603943892094835400343223263313416452583249024324995974891159518799565894561468625012197700583037591951954812667136791409286937106360898261718187685667988454935432990681181822796476558724592279367436959694721266376938274716684130507752245561861738585702105430521898349037469942934950156964171636272156553817521785397150833807327459500960661892872199981588055897079778925139949671773865732568999662755407807047779680895458843538646895094224351831839241532447641484195066437764269882347523145951111299213162815296933351291373106731888489824861478738145742970726191108951874661901053106697180933618121064293590665329748554235078895891715052363970245954861402384014571568420651040272921240710699617936450764787640067022825793860189709657564239526134047286716209292975198673959267222511874783626961426079410517318222192567676703720490271332719957055840721620933556301663767700696846679251476649262725901540828419622003679723987053624961673782438766586779579019763510913134146977158544820112788123968917244646455369478838158930900043130496929482889661629195598112393046940206014506516619495301473460128129376732395225198361956500624695701263199636966085221370068481953140528594360603961915142883397905088383351131574142701130651301474154877672111597843734025076382512272124521695144120471955164343508929900075397547051680074327732819516104861552776509727070573381936231076601530900755825251691463325432740867645633477024065175176444964766506364603482872958509614839600800962500544048474274620888585331827341651646943963710908356498200699642206278004480828049008377542353469767862869812915675423328817012286763836505175196295448224267414529258051360397309492133768028588882306152531151574462196904281222048129132374152689217359367437662713806858939692366560332728159902258758873199653701893990648475847714934599287516747291768922786365084746566928737305906753249560194978885579126730149157617792255178932592642657558947919397913524326738190641317855035555095219402908490333133055773368427500800973181827889964721557269377314545804116034386104037647303045616274859637224525892287558864011497594087436983941333765301068760908123852333484197448247111809827202477708164546969379636440911664220262855297770626022655910038760439166245325150589897434903329416659272062997872891884215844810426904863982300759339147222031339533994582986507000352591759196353521277141886954281628103389075960527823115570810635586225992460310052124649901055441881771761761602879434873584112432173237707951500959604026266919553133792612118239546490232086994089662493450878531395870847146312003583744032691941633935858347372061164160150694364912501722097034057698899814793007750890994784677619090782678162109013704845305157633474286210672084920928928490026653605745555761767205607398705375173100677423152443865276493816158954114117416852029583050221860227743706489652944008892935227873719130423511656623648759499091605453150190913052765586440192412233976486342190805497237183881357043862147686427669680829419345393989836332797744448382098093263257891061769655750350848179932204494618023208246354777960300207226747587672215684016922462189395487878374713297031978687458536201617771770468135436533368462159571119864593769600398173147846009308716717126399409675653242577754982532615205226448689846985061657409909810559664413845316066933877354849247166817106860413874725685278004586081367666051817240651532298274868692335962290817880534981162327213012252471787443525978595536748766574452106909448395991331925317233896688087074982714767657269337465990303061365767743169621192972574137608490374001825734877407448267964014598306580843863383887468329667033256502521150255675707763737800954191727544992383737366314468706622524493100723462307226522787180931752412871053232919418438934396766762486041751399620918073455912305070563741912199431005924706102331856978253232148163647797085499948918101997704420383122905646594443614031005463294292955963532259939295397132551102931444864349822443708375853334821543816067549039083649146231021912868258282493197431767728426013241330982741932342595308140737508273348699163400431655267449907251064077749815461840314044738942647995277257442372470626786989913930465039391238839675582020951432953621404189557320323822012671725353007932401014212207839649145049595848012287838287187340938310023520715396932549585757395525963344406700825075388550173682061114572999171201428478496886465920684401922730759983295334942712681783414547139646499794508852499527932367811265329119550340694124348861582814409273331220721589426338052414005517415345732159505053064668810059584943165862092358682139700733443435044107835491836705670747229774187043312728844748841815646901377895143583303264514723501236765680719959799044720794150825680454240848097500197750086979989960786737649145868624369995333379288535382911670841966356064490908349292437040761878135539954858144688343542050444135175213850327978963672902149343560494260286349015988726309481622559449133286619903244502746414385807570595454066361766501370766583566859728367055656791638789287505833556160304708975995621697472538574167767765177747299604707710593965171035668175804740641113898137560385402422391354518368419010537239224729007414248015663035556381012485438746258359999018681415213239706152147877285703751076973783217817045778050827803883396270151759403667387393353298509916390604533269097862753554205375154865215882674803750926680005241826323477256336896876209586746571689492842722899849102467162215809534067702475794713927354059304920191816272485988026669966840265773836264433538155589071341971206791253804049396288088805091990787111093489436759874486990470275515194272648571748892182766508198111007137636304642086014272205426719215488401363606438454463010800380430443269419191102627273121174550501482282107286325211722960103029347086126351248578349241855879048852361206805053170692099461258682914944774762434968164238405587532932974612292197179570994042323745496524200210644594531212648975201673165234497571530040341713071513590324793137259554877725491078532092174324329647281469303544307878030135068839655161572123078563527818068350487010961666164033995384684142568412567961107806497856633011734426625788593293219894931442657964454322138271789945723793366736096055518731949293274335616507300374309431625208924877449496209358561596816965019106836305036783570475414709195466352542770807923545732895510984132100178984738894603795842829071481183972691367599483830989571209385995240688645299630155552012397428677386226515993704119613991965199878147461188604675803315342066351642153144643985293084993952042432307910589546508860400744686136179699538363382017431146947419624054277630601760820230837636407241138492128504114500781010831407363875166588899401810331704380432091137479090408365652460149112862930169012709457012631127523652052715901689742211844529136797454665343795170733223439496874640210122577053315258258712981888481130533866804610745734486049855829946029261177004414143038825144333820776539740510384714427763299177772604903546338806531421969790411064836729991413490165636258465986230672006647447709394808766277805315917197526181295431971036033900330242537576753302665798767283940402375330537873400265683973059935809916699262374380203650231327938537574873185032782291270348269679576081760731848215505476302603607230807578182472679382018889661771444425028531075170895407691196242078305044676401738579799052259196549319555921883920010047295886941181225184823511851006910766910090139313570161363240365306115558286977122997957272794934201339198351574173578937654916112999151785188835597126628401916358483411919239375873831978545448397325461754163617098549457403983835494068916030851423115615429100185688818450753567933134768557321122981783939367469810212172439944529062103487410407821537435047002233093727531774999802850697351863690390680112779985541630792241937547153343481775087271697036349443793892757441346698431387242097839115654677519648181142725981184332732435783039282448045283164849102323960596529249223392926983562883253782263836184446660545865685572305044525132574228446422451664876779303128521340230333895165594284249988626360353411711050478311966511794654293181368461145030387375452737145891854487662781423597645520079316926436766376633458888850006698045619417257478643207455821664917632025920519403784648250198930824490925308203792321108330020588715010263765913290942347999218229164554355616409296859338048783943929688867797776971532126636871520835102939454624275433491342725244802266436162878286662827624699968650608718295919508379474517236938207252057679901120973541721847760754388973970568014019624488701853836379935196963074247892046820204847486270807093839820083121281889558983690671408794763130722098323096392180123989927532829406744941319092657298506629368006909493285894921881416159514178878470207755849809761352890298444783288133052514903029760137676278697825000971315765042345696093226782019541092679867355930885706333502921191044491712705765255618491550676896808122811520159819186189760113730020453592505580908660854676767243968319718911510865765269343274912147702027242655669041871284247226618345330921930891263116793212678126207868206629696269558148658678286023711447112279408226588598275221138313753515773135346293236471293614537739817665714885841704646564650816433509540065777954536439664775246655006048412860486143862074552199208271826313944116755532472485708225428985030116587235982034389139384436582130437031201507422764554904692344378527432947464487654524426866865287360947400548183806898739474829231155053830332742727047435557633591632458246808313535170334344368172740103080314957652822211282015541276045501679991010703245272855061420223751187152731021031791900667448303546008564294546387377116157702292483101282553806332824358072957755036813838999261883937559982633287857941128596260355434109357954364199921244840036010499239559076235088380964099334314428487924550236392877360401263029615448097247875685615445759345662590673305572285617663910856726039850677123918940805878040983512613966304013987497732737680317165496592552550262441156626801859518987220550446788430156932246143477818318714232643599029441886982121387835497355141821883814201284585506596452650680366649987954796494947132774493301994364066010168254192033911971634739893287670659401257007494784242173537249354007915695696729766809096348122203327275992522473073474113503853829842605321495527020476845069322765968655115019960771446258802373526145905833622841844035278823728563972973081849898076275607904075860152876044756537927194373261264149984506046106025270972268203531390485345452947598177405251211632055532634706364263758236246305018661761331835501332069287029424933627099543536085795256068412881072392124795925976897011905015233786492751914317646091884274275194717007178967335573279129637411480781366137263486506806891009239596356936583077626850363037309986081805385346819377036789166151321323104238642934391425011253068370678298986343696478995088684373852247627225162444917703605005310187590577218761001365280008415021935353651916678119867564754944121839872046925924672933477678018092493453379177870436473461220143303990223954929618122522434604780419993835575199493485995131029920866135626032980982810718074687312903298792050851101697028389072415819183583712396470652224677404181226228504058506125785965616422194016520711997139069077757713748530965095649883260828244620573864059956345003679646263224453093064562880242181780131362379618688219047375764082989848875018144530482355109938846305565799699120459295276725688903615324764132617340326417831666153195758442345880950728737650455722494485941449914480980649813903705419594044180222759791683541023303215882678831311977033295463374800321200356949213207355436765874680896868746794829286942773355705662872645708811419762793084502018805346616025076271449596056197177792484222758169269336194749042314140995501954855775735716510379495955319829006901227240529658174723594841617513765837383002911471453978331465497139523938068880492407064074640567315805952206719091718943402319559637737088183165022350005922429420907794449450771051692507387042083305301864514491296265434297574314731448510635502796427825650684529831851354345065506035628148807828558176441839503158552145755308834398464767842959477506474568148896433071153325294583627454848124996736126328375739581481715995239407133823253053132209247707404684929657090386849362766653867480765890037213015894774356484437165792876887358430306038664976201365882378430597979399383453567401787112169585443947677061225682008611084162215684449925868536044925215538474991821679637574223856026029370298298141488633484721255668629434058412026424456753005679544106735208365213500027452791186827535769166799697314099315535925422772440227057552973749601225055708038163533781670010317265489373263102866338131523904213793775573254471846993469016194361239131087081522352851901489416049034021701036063292410216279608232167746980741646909473129164757022385671155286294601656939638861585682510248111716060707842391158858637329581070832184614714117217031852099886880008425828066813315694877309630200375202398952527979682128909834905000026961271880226485536322860446601449501626761905646691443593114101523972589615425893907243579397014432175106851871037586511953701804101557846534778539551581667423244735498166773861472028864912761399214302080693685817731536267519880136190489875596306575574599709389049934268816010412048756771003459197942051340712812503120340032416916708008344914540195840934990727559644252095171084948312770106900037198797203125606055348809948144958843961894272442481214506719606011209524957112129254651089509408068444331634786540335047993392119311267033947816756301520554283334380942909919045821357146518308687791154975450044465038507597444108882839704894497610865732187566344291206098918210500496865432308859020149770206099820632294844681736050047461013854732256507831457824097934538265179896710790461322214995909782814336407137316876324242011835363147311208651561228963580006686652063516537939053678415063705986666158044775252180402364098910767934986633093551112091805956719307436309495951633986392916851961415503853853964052647141060001755611782652101226015284964234727616562597332500104994219758164096749149655606657656107501153177726426481528190710460800444082698254251517482261241725474378985827524509004957096600738437405535780592114153150249391505702437551468943934001873290789210560224511144624502431157404187709393879154143044091300603489080983498158435255325862386271507226714316740529964486451238033326116110345823977391215559071185412874372721486478172080888203072700958307452747127295218864711220467214046133889987818236431473098061340346725336011972574779010364199636756517624618600578093396250348646120128984733771581929966576945990868989268887385949517230657122638548804573166303749298134185674741880523597182395676938668468919684009848673677084120954356940643754400598052750022947434499401751621861786598183604760428287381767151469709120760452847342143912472545764955410676416944670383428323518389230353766137018453492738241198721917590398758925973332511420519225157014611019267142931434299203672114636773145953807250202567196822563445718903930080337714098651273026790437792126122664238925239951150866085276233880233736252096981305049322761411573179135289820580928705706728783625995017169455613707431265522008841151034859589276198790897976212713949483616485353609210061766677480560027927729348250018713438652900214723023463824804338910347987210691193608062943938438291494281062466537097595055432965481576620687988295639365101647615341317818012076080499784444100449414201083375997341843464918647154538895275043987538568304673658530268411788146090999284514343497692837420093030060022843098175116567237338921456511761373358935913038094265378920877963617715577629739374427630520529197612024025057552905459052937014489561133057696930447839125746199681549020189938539746278929076377579114761225646272923501322079607471772385632465559497273556357300681077012823948998970955160647635175383762680147423394046261112876118165999693927219304879854917705006647292378231458121279728637016923002588871767736882499198347994201751019299091352313010299052641009193764685930719466491934794702833302770947973028321601980559832737746537474296047350036959747918802659802671948521745641235923324752582937243291447480181527745075963599508286008240226266844145785764710359496734470239044560997106615709135125865614230493235611350461309475842972306604781482322648025683088815045381063164787169542865344571055803723219811283638174973008421151086570012822978311986173663467238384913036561697416290380069546596567055222852470951164396913628495925568030963130824004727505488643886011351988706238655638132932094718393063714214145580856766457757258273614978062236654918782220694698027552374820425676664492327893990251783076882371217324525061803195986965941515670411665643534725580805813461871599605939601171426038181353526241873977002993441905401179553976403190393528791745170316030163175919500133522999930131497884241611559553703529832613198718037925977173535668646150054535573692726103732574232123058918593969967954968942949961628818589596100105335129310661824510602993413387938445348826803691218011752301295198913427275069555569462021706972639855116221995060301762777565049584164388350166633466234242987295687612188901549679093905140509201922263068308962538782434600142265238983973634701733631783190805420032015594639644133839224584480483327417214383799952649367760673893221882508518362370148317596537502991166037071591242989635337658210160479478023693251433200736001012507967159037219319025711754748731446549735510082038896134928899209291916209850830758958881432531743268559439759871382245460960510952141672748552563096752048852473677211365056553733980759676099722415583299757880959385577901180630691850657835603890501759936926301640501051709987394334502067286453759071735335016305542557957577732231321624522090176517484754942171595150145596699013901908445202706731191074538930143682700681117876277927107068133384045590879940158069203519188377460452494395172712234315173789309624413684066929091533034807029281114892270262277850195039106792710951759364207876207645949959389739130250585082102597536549064345413716768925423131571872816959208815455031443140954405372847913630688595156103906481773966055164009105607885458560293231706482733880047650028628200838205215839382930309316988903045699317510940609831649378868551938708028564677943951082258801143785430854431325016444359130466109931003645606156178272225538852806147179160664413330661963584386824372543313565549353630452211912401018277211146449656269028352877934340438615543263564370264653829277355800475980971932307836276751520579686674255957355617134484012992192845740599200787198672158827967375335736323035689438703448646276658682135616506573768368366884146707347263865971594768231834797841449371907415998672525411159967912930028417383492573367943764879794855897432311369223054615105118347882976592251222795235027017269133799251024272290636717018840037155471362110295968360838108023949184240228048214710753057793765819742658371823511398734160534934175594215433909741184040941335888145287065226566770365522572707975750583524508537189379599299491422390621080292350644657480430642285599474103572520891214668918803852066942317965496680993656760190011417695619503066343348071585008262737345394416854940871341527170148487403409935589737668180804707281148703653206953894591673901975032123136632163922549880175481338203374019811590142941596039260969112709736368399923585965468216895221436180908348450808170936242070477378190295652320129237141879958425174031208443538998703614811712078738067690019843474475914083776460724271667003665538945392738028597003202843873119084742527400345741097511000826042924280347418505146780324434785638287511888885668935680650168116023696762736531470833138804058684329328709193927224878331615358967050708087539805282950976799748012250348095485964873585831681408043920718363857856900795881264303419136339528870096937380484081412380244108720486282509860351482316865304473299307408590307949348955979627882423881960576449525945162246727619716923767518181095176980073302215937340719153185635709092199650291950216319239593379992735411987894044645693231062061934248283750298232881678620929489361593222521838143073559184750868771658222743424965721148305467401107666343974200882260370540903284505562386836027778397013452333849988731815031515020908542234287554697133362740343297344914929459214834369719573568365905526021983249770701403642656553470559110086303874764839513018952289120902797121354130180426561677638066045638820999130632458223714674769603468297318102437287356898252369374078098479850587543697250817062671398616939907391659367903970164738553354048781737175694354468457140879948649468001891813856606575355069499216388328306199691748705072320279609271966569220011876172914361296209604378333412376325171001738707334920448243300879605514900812839372242819634469780310474631192914168678437784990196828502379873600995464601077187786128384398795414580211626176690754056716685838507440826346478273910768199232836794477158281894641722969028656852236545064819540367005293951253717404338494474708839593252168508030040256420911582682787069234423801307540421582858265546070634453442394586998391235578907426227837144442624382063710502709065047971030267992995340829342719952893181098749418863300203786851338159741279053514141389006193947622411297050517206152577599945717120944319065538948847924587116381116835116041825513360817803911596508399004435883823015683359298475910370744363736249890994086498435102435966040120416613120544170478594509733198799560971955316472664350388185519293668598754121864843849924457661307370998802527286935327040271397296651687605884058112449777379815299605166525321645307148483133774189035551544407035618181968568968274852926928988236729350197083406510110482587750891048643440919143875717889227926421930558975659216435304962431781503115494672352355220702437663919202259317763930969940090758872557909545894841339964876705667975507579209950935345713222556455923781440333225693390044152802200011617127652790643131026271029318594784451629807676734036244011729499080311361313206847058685126771206109259771068932792063428557955270937550317779155068103599079784249585884195951931879351046283554508914924538373872783311356695190617406503880307057138547742002554183129320170167082482929586541479844219630590113342490602744249805150989007589831302700338320922055044603981235734930283477098860203533888461991834214441146086955019843919217359519230804226416976013066894348962373266073820477533649546396135220932262803278957224875685967631085819050919433545851887211374262486196322988093984029063795947445260856216936426783636611172655087802331869808805162229659061408479203347003609368349614604258138180460372425260701321433750587362953374519166021520741494113804556789459199974436246284423551818539365123812656037135017713818993909228341462762458475256082976112414018755711971625927181714246058821597582441125096893325556750428515476059287263276746752461984483912103825531327079917820426570870363916487482776940263540783463024615914875230816895886273609744423480166124213183919879636929327775162431690628539114571087831914956984547148776533461503443630241750181825563234122229155509217644108268012025883525312903691672495536147825811634561498291913327652427622888133957872401658225809356222515795933368694785344629800313344357169067086165839292593764561060581219365654376446331869637484755378837845727644759905573560925085738375337376705469512623553691277975182833367220583183292887663488080805764904694939150642900043065450744551137987770563940032745691317525154860851475770801186053877525021176939630279017765768665987981219764828426436053068422915472269609694712695749341685340912533067983204297564421392825171607105400410725092378415581532238730295589609404191652440270432723685056387109404788626647922214531395001973562050534724291648002433741281475664199107308041164661365841774141922064435775311138827965608886766468528555192764959887917809072600745590978301069827792653691219080635307717562954979700817710749528155937277408540467743508307081817210489535548998039182626044103743758070455945842026397681087206720527342101575298933623047105501593620025779081182709641343906419745131908783817812480336883486034259572057605736483879443175150367282913898887948854606645280429189968334493634590353043695736334263979520983576173571131697383354686339590011986407320366280200451807497723420595708618365281763936489869198713626538886482272614528841612944260867963584862500466311737246971281150999456278563129861781392484000528168101215068641266102039337213362725827445856149345581030740289054605656450304110963895275487269220766761833053283966188156616874132373912897738800467926655599975041215443617452566413232980104981573115872097947075361339617843760120066082315621540363580922308718382026633539310544896616852274580105179116823297101984807486151998021722547271802998726466667818547431155439033451734537714487496096147342717388362541273359974135990359823266270728866393720333671768335746047425515213941503116540428858686054536199803658847811582107641821658567495338650861747030039044951130511802638189111561061059139957275893180184385999855225673012979531762135134634115614273920473185682618058239725177732795587271738666946682214366613998654231962694562972925379231027245560270331803825984886680826925684487842851358375405358995407930238951093621119573889106406200444952555208315031964054689932664910087968665256717255594606001642448850759016221291829318674988091716589979060141032773798987802079182890040784135092595040498708598764445779410408607241487543326146589581903155399573025047485668552504777118048656791080983602545174675250937967678082218204074924221552671970702501422414276336201796156382358649462404326076631244377525621857266639294270277970314112039402114528489419427706915960192882207780854745329620072090916667967601254675972444971352707848502224776521546735050413581556711276338968107943771875349503026412594088754049465521062910374976430151057798217713778446462841811891510260961434932817037880970562779798874451171224496275643224160126609957934348056943521763178663732816597296134268043517802809906206606001430598592847710694720651315714649150386671779276378487919435278941175711056227914442673691974727217142249709666312312264929553448551422191123639271765462596174284174366405460665450060190130826947761253676230371968640319583113137531247880516202594325666896574075850579805321711546927911000541532135977758152164685960456254009830883966176130801724915441747057946259331041960968524448546767370697844460698789428733904926690206044849425675723070268131870223898617799232214543758298071708678454055004275229337724977046411986920508526637664547390503206211136920143826769987889425098108953802869255692177426168829863898298363869922358911537366112500569467771506560832461162828083733040468879290301274108739547374603272915519160971621748615201290041452502627227541801879883562066924028102223081548809916320759139826684574428934048568190790410463949244638426545633639905092125543887069735913550263161400380101251020346897793683910728675199296574352821219358075747517177451969760891900332995853927451992083998146472092757554502800753042742945605565565927501150169076799813788850768112453257490612120902418140143911815709612802403609908068923783636328953080901028220044215540646045285734993902692310014979018904436285140657057525206474825493318138545284282551648169128170957176129764714405543647987985745388015851639152272783163872571993665850278668300190923897343114782444079843553043889528287513199200519390076379069158467272790214773731949625774539899825255228498908003708751260516066693465816064659458823599272691947433701293208619796526990817160981021657342887069987192483600292995362856069648620720086496016379125723056399186380691224541095060999012711823602541375280300741249249576805104187860217693477980406093544756621423991252023876058063167143816390274916960468959173677912434908069695734725980811567543016703185016217167989325731101877192095321306631966166512466463727944209434680879753018213431566456853019614491976954129461430572457424498350294473251806457773938473971684758753780759592300246376619794439682391168846209247132071605144188788932977584544381190223455370831544523968270438418122436399660596707248081168697976737416583378282900613864578068953505588455034230113736201178731966866052509992170341144210406950603332443115427585957817772782106843499285457578396068707516642650441987187004665064044008337993249291903877068251075818978482365650580130756896216428493043303916225277655221215715679164665122763902161117424415801377443856427471746647755511268916466906754143404975376586539454323980047333013884143170512639083287925441994344831971022999891987887095439617269748269440262554353911263236122338331643344849856050025715458096809625735903202491136332786221495598133381695687237399115232709688678470473817803808615648485257415144823745079739475567251937939195699039835103272756025422252530959944788630495387153102352294858024402971579091576661984779677582581058774822089133655541637576334838571588335851399946748640618584634965471540713638620292891763110458926409556832190873511191910546050701102352893243330243596894554797396691633250255468086306312985785948928927414504104961741518806045959310344844297180749968586890240883260562743890186074739346957738429626307095853917851106076299693108702698424890233454799541734771570928155481572957327995967575008736294338125153165058654283867615404192850395739844149911330793616922287404740545156299985931857817142761214571756037105787050674333332278629793417965218465421549404080489994650067440040491532057679371100115154995645237775526405772464969939443050536227636444295889130767253338791347577284039706647517636635324689980204658939096914914974156658007561828386109088663862324635923389053263223746243717276410525082716799876896812058012342671206712676873374002270567493424162279198549771440343478575127288128540844490781565611589929428630587901087300071754991722123208253715915619881180180392306369082337625493052719600847634168947589330782303590367885105494781257126737331214619870326084828718441297118015014131845419153114596871112597957302679060202280492006301453777936160873347148802686321549071341376844921816081753532371027818809594529608307839656947523257717034134729640870189547905272729217550590501900822122010107629171543267971374090054308425882055717335341989501444673450876900193885879887284037570884734141136534775076389410429595803202842949386395667548669388841801588110216220435492270475673676656956657459754251576045099405440371249008442908881940767191418466518856815957032272703652371252813757828622814221730756118370722970423006888146444211840568287791661069502922975865728584368645907001089722300900898794739235700279439301292348908412410784810301732225862459202394565355912608560404189145516115835194548823396335006152838910037932486544685936975998148332772645665744514058653801440065538694930937595396434350904805087617259536088873242853021295389185180800832071486193682479188745858713290591553189072913907133469470705624400005411697840977893073698412598439570293324986058544949841685655807878561091469765628261044804521327016708158672314244132552039243196780539775657740719757974648614281691401597055151597030936007731274353660296202680539470711096939638179075521154469550654383333422817172520544812195967817729440515637585730397889413441600262541090123219554770782889247234918900502620818242888682972306116889407840617715989610583162064857346508633945869991971853520423743759645900638848475717555418008818462332578541106120172309209057934950500261409798665074832854400157439068236532156400323827815024672570195481652554103928776845327357080856784180860080832489243392344610251238820546976018160998089795469197185394702414166217626085179358553502890756570861978818573461322813087730618778963969327600415672123116301380073886042988791557733675534450771110871479767892539261191534902867919657005360465201160032293678553027540344033053747059963670540168431111847346575797085597786059254252600716417609449949269817679983772543675652155535973675798122294429311146348694119609842584182514277608357165785131827442158705847483168382030189198203689399059563954372698361304636858410455549733278121551387860426322649896253675100351094958403268118678358214028965136090739031394100576824598220717940138932466231800744481346567108568379553254438034195562264477637592251635049295051524154619803526230094801182824358413134369229711994208045326144583896907498331636922063127150879001447859318273666836707138469964100632210530233366996627585300547131213884429492286349789970216751122492253454987082510437072988766378650726989504917769694455001429180534601502339208111329944007748518523676579264088761874908500637265994528387620398123343633189526627316522004338878964424496359403478924168995927254364638617019551904078517291774056258119971869317596027568253153955375749343416390297323682366143274187322852730783176175391566145673279402947309949899131197548679480166608091730631122718941676838963497093783365254311346510392558168299470890899437613670920603488342684287518109284065210516111092394073662846355572389800250496516362419651183019361877820396964543027360954954073407592288682773749369375863040312132729150721139006742191617700677356064956795759789432538253050118093786736182170420367788247010954790151856111592053165132984555441676865247448904623300104579776631991591084709186635443563089651698979797918467317132784912023986879800113113478460364438854157445247689108673353043734532714629282688807133886913978656682863383527391827944225282927007888682592102779688885002562117463841119141023037174267677336232762145818954515525575685380287302679221611167395089799616870363092555348147079594217266989233591062441098853496899062812920301302712609162385016793623181627118672373570271118213024543223752042489205924291916384703308823283807530422295137193168115389836641156787784166253754712968047815865581047394998115373787966578914490063487426070122296032613035668901774102818672566605275584159399787846665717540683259906402247570004128218599592183754832643347636164177513232730992872812641530939367906319762195128953550941964896321033937344704536484783239261147763658348912128805047904321063588550366175261219820657237769968095731987114488324956948038514905040055204003376977637295769636099970658329233701339749757040814358281803042940835676376517094135283650715779414921096366764532799810762497765152267626081757401682819326243272307104557676941579924953155400140407534355002981649628862047648592654508607626134011159397878712659853113296826970733915791406930682285934865663588907321124504127741976678309193074707842393108676314575501287839248070326856240527258985943207888381423103973740247421152061634246808945046585031722714572076223749038164671936854989547168103117923466930590134639988797645658336708492880934185329550900932628065783430769419291735733220165747741021370792417840409112579169608352967671801091696527840791406336258942797082324037219345298943815716971985199519657391766010584177599632966241480909656038558963780437231555188634539053332616551988715770883797867466322008066374297732590106659866535561729801927611343202282916816770485363289074384771714124873757584544910853279670592015056113386142482102093180550513792400528078626138618749764425857394877083285407754454792724568749726242149665804546550717319520095374014138005789228564557769822110530947177668516063385311749699571532624265276757061763578288968995713480948888785019462608132498310477931829576563733925224894474986434451252983518802442911289450663753549697354999517439641836423941852146882457452974848260548036062064324794187142511697129456849380940071935558006662007963899547391418619830888268082267462462248895563451097498165657424861705343592532772386475400310322234432868166802184746468836775381276294963770241977142030090977808933224279848472378794696146815540099048308117089536653068051188161273363594163293942759711016931768052927806370173518924792530183833587456878390741346389095259847155335087894556288621721279353821103473476397156934580183923894418631375000726885245285070461047529065674238096274037381714077450642948965671633738653026891579217792841499304071235413262977968194026132212427308472627931511149200362406166137576890303410929287123782387692062515575253627124118684761008917332296959346316079889847455030866881599649758952532875392164611538622049168158098642328037820978187520551216204574037699763320362726198115284439223205969434652089870848181931926650760358066961486886864481547400946220737268041242450181534011316786065449704996957983871679335292900193941169958725495889560447384226796911695386865345363893535849432407139602249734847086541347776693859206973977883402048678468202715336434534137575708057521640937351747338991508308514062205343210815682942949707312868601438644743221972023727086149390940491727118047293030509725997590365085249916606184935515227971511179026856376390766995385514283566271089419531526161298383281250588108360001644195972288002562545643842824820107629005795355515159550080073682107309410695377862428729822451696678613553154311594926160308277755577220264095732039604693433222655503962650353900963495868262268226254203337151311324675057389652677540022003708967468527035614099528493730127523423711240720881928277955200765412997673432955008807185655862529504128599416385833100939304451400223397648575689503392121162912304763724420624349302900280734119249519265489490021923218106399868403764909421288760218086606000125649560772496868770333236093788146804109651938398173637067024724963374317693189810149660133190763477143377862235254636314960771499829505012741553230495311024233561626971714032327342104233866570018465383766487726203290280310171487231767276531854680995862961284929279162091365571242166159622289214338320290011549157979071167179362342122186996367097463657540023438644857939696906325170046938241346981286428911520810711697703866546553495047384709074901082777472491314904834873823472582312457784131787338927718601273222383594989168428184605303966155330812450044194033396421218170567631527607028064937725806573965292790532596948355855935085067472198343330554727563863700912821888815901778939977130882358194835123820648701537720557386707157533377564896655562581324907919846402110573573263864854214290863160558951421491678496457016403677962937499678238713244100279973289066832640482054686760828874807256449095447073088940990781914316886498483208321481300134951186352494845337827450713040249129525280662721203095980543907227786698783074937742958440527890139645686198380344312913331339817811388330867479082694708569630655304840882666900265450286914527139784838075025467168989846696267599009777909876042679844281246335261650902804138879501446859856557078141986292589902544701181976270202168466275152470905131837660432476759184435680199598875155043156412452012593363563222753702166287317907954259593169255542617238286898694240623298500383909490008322762636575786503258165583202471265814553608834015966900768872229227957995904402691065885669487419474712442418662214442005578206296775748046205031909773172008678438971111974737582481708468635902007674545064205200454532613535793216462575850693988558080243023256687556582346068478451550041946154331205143754076635541348819287589424328308942876084870744232745212660398807592684725369274106863730563357182729563025256512848660993200853511218559847706021278522683790164477066932309118556845722766259035824089411988679819767650959531029112431800471591069827637216609872786131150801300546637265851314447810905354611520704858577800095345868291224171438745893783149470212905724216192943890473600366669874727184332563535099764276225127682557138631931427872526492066859893499655658595559684119587279699641335456545113554276170828309891717797597173244562829330902556648402785530554905599953221571880614943458690395999450712535282432964422048007498727200717315705298507630895070589442841118003008866264474201866622657634151645502336921080124061104371287222012115251827499076010262385531106731058241076513047479340070732827775499244104082195322854600050223539936597564115822636311022051557968719393545808864831362777351586025433655820533928276646082263426411749422398249112979903897272683845183722485591214979289162520827850974548673433790461060474241406250023981895819497992178895778191319140013037896453153031093151300937443012334307675861252553091211903214650239981907784126032753289982004075961729749564685718117654564564132610708889708096660869820623943718586379193223878414558423654590327745509523545424909058785351783646154555285335626052740177807406927825888448271450556698007922070070001342268909228464208133315342808828022228283802210593906911268842918709584461812573109285763822735603211642641026119416786423403524156278804753633858549869632306998465936508285572718589522571301075377531926005770293856004872308918538521482655820846791713744298626117152693000637392110568832073214894877956417606325494282559833099635973211163374731601389549890127364668921334792956292483581845107725599714578025668697760697898609895234627336943378392282508527163632967045819805661788814461544419961736776591748006988057460160031370301864468324544031683661184170891269853667832580996729138836210144005108180305461526198779459724808376420213083061545701416983659602589328264096984376439205933853248960612591283542164431064112555092529042237607060663016659840915869952782018005804897925562402573940207848308044517937629538164192467341821707777259539364049579907150141842704660217899731469112287581747906299559686286537943638192804074883553541752314456557846091305974888763068010558511073261178554780275407135605417644266778885619550453381007109802253283087020912148670217673754849850083450121741040446727831610458636323097942461025121809874297633336030933396212448491699752800528566858304180803046438189808597131781830272217975209792204646178995627911784203004923910656533114604130421120297963225107567783076038954806497554423939876843616529815866890588623033734576328690866108326800043353350688251641398339477493992406479289819851760015138667326040903593508678907337724957066264517199113582522389816239181735301952376048523307405748532149780045012798791660022370999701539367048168564245774152423631715242619745435165268896924199041622633099650543659309967121672700901549103544161136138107865208186377972963792139748589767349540385161595902945931145820106108874713959719907429379151077367720054108092761319021028965757482535035879032747376012701926516850689839287036118231011267315709646519009854310624787321978900120101832069339254259943128539450756155045338324028670332996758825653187326009103477081546260142440581557246234210756703901162012875954719237279065281656816927439991974507630226955516809738084493451923148416453923637957661139356710362744570661026583869495161326321729287017430983834420078170707385342149177312940754895344081500072941357919165524796761135571404198054149153406450536343930651996367449796152408737608333558621669496639726435637498193996410470345744580525458039746448324038391923431849514210628850592221414718197627721235545839517828720909129159148702202969632499967403162209860061517033471488512330379758620581726977183171823970944249204984415569323300890135917637263615688040740528962983520380755003299538671959758488820155798112023141432728257084855316008817935260937614112120593924552768217777140682657786871317738223290698066627899133711410575264340743135248828145711095689220171492379563083945179840560746298603868240899904364291502622203498395805911415986880131952555570186844772652674468151810371335423757645208708143129922738710297424905990010561222509966546626542449508105505386541971583800561208414527529569377489280211317964956328508428026621150142515421277870667147599426030111125588984337939412700588193057345166446966209703182931873088981267780578259879557336186290172504581315263699847827062980405232436093507671268598431147519193575553841809938365356402817023802535774113603052030108891985912951705256318762525733062733094356388962985735697124046005366204919781818556915831498906309353689340664126964997880336913375552270917397850674950787857317404246158708499990376356062814033692568695316548610502393620676112481408090005236240524007193697305667958045145557972222232106087241827376007740786312159832911042028466474331573724521035252842430610177538847757110841036231389319144073355909731661333591405311557756933034746217708725954622749518819378819451340557353100080526512223652957424910708580512072224110497983450545393586434254920496213520670621485030989727438966333526242594952908326620655442813007065929074458246560366356294709702333260284331793151314272897838803526339393664728335800301121204352005859181365850026532842484190602991193746528822150325451802023376711206836107834284126180318511678476253177948120342353004988966560562418721785446306085402508784951761551788930681639938627677626460669358689588092571539366512402342014016536285358335285728018645701621985365755696890701213451193589739422300970379753951972378078483033946838667070990472392095859460409358372478689723533609938492908341437588830394576880953347281392551199294581279609016756198011256070904123106671878598059489566297560204847399313557245488914524264784025036864709214649007699854843218248201158875269059965959707754943087771308282029207651954321031836736949983975516091895304151977537400701204112588910304826392274323634545097596231439650794306877408362536439763227340882130465870879159811669086124756522951656794944227049433471815452718589631710002517948063094673421776371309444237012785444114607267685681695232834187925565141902899475569538008230950886913115532063075270223775886047219416489821633982202979743121608307295135473663339693109148156634405492503562480265345806369379441512326757302566821538674748293192339815034255369135466938382567333595967750805936843791402410932853293494470387134706694396225786095711546957317648510953353863878164086873539402069035344981354638007529294705920263701710556893826251201966024305723634398973781936845340586591792401329406433795382809253820125787589712736263176169772182640198930380536585767130091872727748681619041623380333098763129749483330434133617097957943451781975798991911031332384850839885458473123283865946854303198656491494061728742121936490149888090229131738056637951807542683320920884621591106978158706192688569621153809795457074983788880754217007697658197759026753667882324657412907049287095338018741094488032310842122554192958910589507079547927672237672748830784365998292809494810194096823741194770370432381826134636412862257134959238305440847937413830412298594660866098117589129783700447445733129461178439487374419358356964373172416434184329159496381534893934320401382872523255930243017394289211949244657844055081627138819083621625993257350187038301022592549381727754394254549776375172608191023588445658827944739351983762986258830842267642542328126782994557002767699568050992960046304933863742922986133593355762646243592235077026323569063303735002388231286755170166295415742187258105517031720389889750088607704220083338966539433977122160899603363496146653981715328628388891860259999836110881585780954836273950250324577079418339639860643277134225291139557135210594475375886292070999402905550344187005609969998996433551214856917130459805394711878595912690812381114040968602972806623846695749908169782601884023952264845682536835450598725145305298032799050815396812566162724602949949839306904296930162032538841320975534457384852555476670131737949508868025926582193909549785030270320438335704848588545610577253957789748754180861863833793709634534541806252024187609970593772618018651252404981404027850386430226638831596288337292380461469949685759961366466908009201823406963205388841735894866234231231826641767760480069996219069676691111986197072512615072604198040834418995409213799748348658375155120823110103153010347460085012058653594441000033682343050613213170281046275002406659625105256123050108109602088053452332108207010644676190412657144815983053230372853464032445530223997446511813555737662638201731921192215511175279584980246845610654714004063541498160484328735609496302917414249305378167466971097664824493275510962448506494723921371942250056183946953950809962137263016481399774158833781238928562872682708167969321009051138123221911669370074617522079134977276786130868514602906893362511589303716404184569709826525786749610367381995378128517144409395660155258465942785333515038205876307491741667059283772029966166887478745890008572554293228785247818233082618319922190394116106156488284856622221349644705346533195831006547404301112400627922039575421088641012670233112654160335558508429773891336752872789584068755337979616101222001846779215890158490721350055821324581267035852654972699849105001779101953518306862744832725987968846435610371217276191795176306274562613415264971334208435656092072668910434555877747954431614173174851285984120025880015208948227987168428781524782360391225020761423225208366383011782375291063582476589057359240858655675826409361307307046225228378291509942554288993091060557125802382563218906634560379643141576816816015748088362034007280735975044031326649327638404768568099279867105696360418223737400533312310316400439430831163517052989686154677975564808115073441901641112551851982613971998845458086431169503355439462293933245052270635176255021723012266164970616511687401422804053473765731761595229979721088294432221762313313580724080369876895045348928148095365387421815531382773122974418691580518379239304279278764956670262409765039617598161757859938531534724465403619017434539994144090486104620333234423421914140925174999858447800207166319558101217969041227656538142027600899205243209920574116912316563978689898229193716130965522092438521858629105860653554196647043866706909818913147617376401317807330116119987206099942533936469969944837679372649878920504871429409228383686559910994447184772872781769471936957228137512856396258591434610782910264355892454947490828575507102059971329597145913400672445843039346021150928378466157912750970850497091513359190101265299484390598434808923401671632923216936340736664505172017997823661201350166456302892653772180643582706710858102471114853961070357043709893440705806771424893302481652474280661119040945231219488609596957556725776833023930146531714382589032082001192263922912297241248597343696655894453507815262407282346902131417970778098787564650033969582014725353944715705214225875115496999265309204976939366803061486778180648240177300496807401486933290527899783652985186295266643422721890839312060559254251143028531344124398500833133258573504548003902481168750044614265783985280867536114718717686802060789068844852460835168901012464675384516672225649351546782979776137162116628879793670002962447627970683145876525678161480718140858385070357686847032186735681023563960035032144153585216221356305373705592336811504010676848461309161928549402223180919053268840808168154393495906765786529610399998601825281751961887788621541702430942528800857454860019256463042524681299503351489497417695091504726056764478128337778565078089491745613868492263827908333093203971731058949092250290040189437286506585890929140863517340988181285310711183191704330799217411723798766388825265670975898682877806578893556211904321589353365369349417599400377150450296376875026207363558318702959416053534961057209843983318102452607304546685751105676072568449607894512810663359654223588471217605343112522864891580288033244592571932245965884602486324954829024155609709518741866558405058263778634863915368663063190233600279198639239336435195773015564178732686478827419041650537625042293339200255617237567997546420306175455407516131287015988333858262931220786426112619796606104266411131081725235046829047183577645377269940045841672095778699375192869695714588426102600032531478234663807136024226877740570582677421413033416594206402550789003754485041316317528523205072115454717514711184574291301484247966128685777880497441018375359529497025702040240868406960448180983936259033470778427273501205060185206856070800675080520802277149135664593452124584478298032467701537043165591402441011556018845766067973076914551651332644997768021583169735043111319245866856100478794158633905538715213056961648480992942852998440121123329354650413154227170360287063310203068763818280728313114722981678454309216140640659394901809111198275617951175394671276587757948959507645072025426957458068609475995649637597488279390928015008552192795422729728994437799971107223878567518494499977587887154622764486977217024944493594657495669878119792011658530220510298055762805200557697608956612626458632669695409407494259651412105941483679896787110144543878806033933548374421605062496259610701399430979518113796807931036844229747219317881799640312558322929880395594799707942273659045885455773170202837886729336887109986658929245297591148038607054108121592310835973410438264032095145649434055713385519371445578455837415041153009893921748519358255782718966187813781902264764086133093717269926399204371946150576063481221708284058198160540975616534736472656243534908993306269577544500153088345474651055027134391641339864574881961472250084734265173245628143131054208265060612582159925235875284564734214097365328724860649368843137369798064172462794639511038555177398545191433086528806699181887466679963967260163031555140933048829928843709116151464762176446235580018391066806339838493885068064125887240419708229099731553777550634566579992504060027723286749692139271168417721883859350871957459747227211690767793397040749579854782219844820369569555729383414596032889167629471209575010986782177224134709564734041862296068969240305137137219170791463747092724708532888735456736024629230707641581578769420198542228677469973708629551419859567535654189604586802682849388685087363756862965142178935673889625933255366592273213511663366018198711748727752474159119750463161331983015724871007538923813666521222147722215163312392542319947681306939292624708587202991848079834235177353335246102619888928645634411468645410873395156467059156821808315902375204318483720728933274326568395176971198927793440154418671004682809137280010364397246551158662730395752220002100077905230148313732626054888596870840259603271387110672904029563910428946768092165247866486149431442674577159382141894295380495409599217822467707098104303394532022991649461684045332474979110294999220791233355427221343084911724540249480738037805925712460006852218074274319745610333178887489299548029439444506174187181686360267621776679889296813210275871576653050051028183754716872510928926982170925389082334641934343306293629335534421709194256648990940172886580238283551242709543323645528184395683234052364985723250239955356888240952080566195481592615433047673353132518520671116443580805495771171678606890637896661392881402158302365530980077028795045974712045989959085319509975393319133211582142064010307202761668360060698774611483229559255542879962761961397865336194431164639731256280223737292624202465583559480591434210500483681439683032605631672346803368285684779798855465772845517546611228796698850984966868238914925179567126438495401008294707306448618930658065041442938103410033238241433970272115559442445268627201003423199091906526485338149123487535353572612856060524092550240399533821886265514723916511454321891059844579480203059759454006823207811829718266241645941795076138855851962033377465164488554138395109279224428243204413770280354138692010775520763359970109939408234563106923679754517041675592704621104927919271721391207491510351474057793175636705978422617561489420579037828660556693480657507719437479586051450537034404266903217624992769951124379604689570390238951805809604550336937250874620965284372896764721381595145212855693818999583922417701130078047494361240527739789378864067755700301911516951035520613112658575119901788707140838938082966904077580282506600531685993141257062312870780429330232398684751260295249602618172998912703476743785999955525707722436396989403433555970555309989472903833662444778666399915093063961993927613405741927956653758259973290557756264897778394691503752724650991909109326116468280382927560185915703511951621793894329153363249083028818286232709939637410550041712901180133373043844049222762075124749869987737484695239289254016967325222919945987110445722697218959453817405738499020544588508318131006614553581043538206534911588474281267889036698095502704783169456730475040468948055479139842836863211871531933719428836087359686749750988973752751335058457155795929942859923233022831951312961935696775173133860358047717607223041248245218401913993128448812742806625400578831830245813976700957119594593782214001625072694006640477272789501006318742586822477186768935067234908732909402731624928407207647217021668017564357025049364802989583041963811329901262030728350953078382300309582448778223187232070122802864768586137967368620267972500180245458861019177010698068581030312388838525797729292243238198908350919329355099078795402413432289056521753775845568801335344100055443248151378366214200736918364135492754696355890275639440273793429596998782899333322351079539259024212794594719978852018155937706194758079170006701040949632088519740658087200698613677911012837532182809179372896879509320163794083508774978604317229117822619772624550015519547725452171237428706652043303152652227067472066432268271753501343027834107280479017657841504341957963716890005696216754294105259455071683130761618082792509752696534298250856754820514021692728837240685311976677348376873472797717281354599849462267913221831632230528624640892571068093397922327449727705058805132271720926127281354392100788814697301538291602274673325383471172139213602818176655038891888838620152850354785043485830745570971375684661007120277123659674997469083296959350182872884764228106261777810066294765128662977422915374442922259531787161953773163425347598307041683356288439028107290179027922813679424571530448034675336282529786910561695371525457573648466365139607214981835564624752604476029160131977404656487375837393853926536736749935210864179248169767833456221537173232163027001036864429026748597193239899445471857569485156910427608502688332885018514414958529219247778375065189084558203614997629297079393593715760460312213407457234961831366323560995528641467587134689468185939882323341820802302302089078666807901243229419857043484238776106224360638961923375732189975243504876773813681381017458157704698358603540188739761752477591061810293243064083174663409641734492110141823083624363662457776401905613503151075519087770056323780522963941295937173936332451936248052232718804930912917330395157635281622287708350559190389937338153546342875330319389408435886778220869332988183460814862050144175834161532269098501730750628160320000027329472921752552956173878893770485341106334157691535400445860906177177786245273149340594799335547089809307086442422623115348485846534872499581999986757854551299291347155550601165216471182876782227489723275216534415236517071038798030504831859052283108175794580691110097768891157677551272484222400835869467545408093678739031968247446545954514322852713857605127333848851115481404826900609192328084062616287769586071578478462895559417052118408258862607842391186541101678220010329352112384247645772969777221017632586648652569852398396030831395718689915830616762153724282564683882835556055105830839577475666413777672663145257368327878603770702038766347719782044476762337777197065399997680461588617041855307980644062028515825193641768314239460625795097616678185072790369590215843989887225555487597560007897609544792544789716372905301151669314834347901706957847679652376862289950332270680182565483248057894961185864627005767259326718721515211952596394328156829695868318772645729640044971986391871500335884837773705549703657491281476719557003762271325208256038478026677544225746080816157821989778979548978161643907856148801668718192612878706411518842185674803457139930726554624771921944023018689939026476713804178924202847779243413649518206032827365721221702655091817857567023041176673522645460664483669550215116020859622106011180749970741521076237780320942280771815922796348422398435778757936094413797738767290302115532670547627857770734415798611889487035987395123133059985382179324472120983130929317952515903794777899921269647305178386529882139127954648998505080215237543076307614201949568301640858969626228099093307328414418831047081023613127479543842843825753949464791914914088757300578253173478453468902428189918566007624186306869965275637550575515828752729243644420499690362677281053908763903976136837404992464271266559067909493774377905082521183624037497017333300160294818425276954962267321622364333740403084651467079655323899747196867334336686109880307104727669902962185728222540209219418950053992914403435996517512135974585199530050007268110806180553818671208172859610756442758433099682011209463844485705813375854807576514222826338228474299274172046578367502782824664718762929006279056968315943936140120244354482152191897285028536806109211395743207007157344027514449566787267211087926475062392934614290436791809156986810830988513798712007035240652288526762266803924313774851998869480690257700246612431753361556412568903656890209196072702706833727047216105762080883280711382584495017012202795994024092599606490929641319859145669639650606802288540624094248021576969613279147398652870809681131467465531477018191228756270596880564618359718300341556938965334142619769592918551076147214715975248002071834684762985677207002729956955147435382984818318067316050149336818916270152184427649195576117857746723103755304340266652738026244343608370514438266827912123022847450242062643126063873503620113967162994991111622438349993443354238516141879920192065290529011831030762444477435407606449855941076732357362112727585816781814459406954142621430056713801487767234493752198650307771308015345544233100647971602621594925606132991422788970287804072972531242708553105007901729653179896636992885995502989187851149586534418071324517130815712186110580430200120996405622103922500999179439965954263032370193045019261043845271431670803842006499778580422228955617751706174655217586177567962384396793120642765850557047589325041036360047346877780311457901859748393984675221298062688414082400900508120791514710420879972248042653734055807613328507350924215282183773548973421290663260498335387190019093974367893093997483524046499147317311788572544916468291613764020116427123532044753087555645150843628232310160845339254946816943592438559908714225377067137230280486279046954936957608922613863687627118111088789889975696365741385725977122991108386784593096059463979128647830170053430888768030107628512730313306406434376210315056023099076267601649962328926632710909068322828881086565680691857175419216544915380745833862953696480736480993302064278500638445191251444799284671318360896231268870624103543195522751205175827425314707351047358944088701506464437171074509498721138854163336436062260523997646040528383456505770626093446794373003190514281992584790553806870375663513533509719726654233460290572069273679476985367565495706551814601247467062176629166398164790136072743335261025808650992107686494908201791858157890925022866905108200789684489085661189182338163610597515087864329667664458322712684034201350121202379497471971421807269636334950557804620978860902512793824732429183889551673143877580687457798238438447488029853061027868687627057980191589881369303314456638624540843405206462605964512833453208493372367288610496050546529109004443332120082556366250273769128770826879549349549086515694747974490661655190630706761374425257070274719003723628205147084962007083660514639341693919949902702030652084912599307462080706480817522940759553368093823820387355502455590229959411834707319112371711160845175758818298170212051157950614349759224669711748698928907043470724487816487118412885536688710424273323602557035774295024481884849722264936623495422932063466157860371406173067210718859598424398847134804066387791195032518962645413746187127650581897903628379399561564195933884409691068272934506870245039691323921600031564235864165845479476156630759797439214356941806819262313780488587774886765263459632351156149903556704573488938813035015197057078907450221629471390793243677892424694569906124672439629299541159438430770929967763753868752295257865458099753818996339507883861520241119988811060812420042346404936429993882318205312756161562540113139966868899076738031545810284164774480305313908192678468498416623868385855157780579089421222140724491166349225079802124950386562955272254158437202370467270441550379612790321495024427508775705441318816589919133497927824528813029540399336733789276128176197528161103397646684221660402648999609779788991155007078591390670813744927262707670630931051566071478949661207723141890565338828621741247877860444416741140600840686091344894061601291454755563115671197467651001625354124469201001056707886356055102694749136801667355578373674760198828349399828374595663914801486203113858414746445945235218118569335201019270891904176342923671949008652339561315085121020498601859532052066283277396094702500674945960740377098310006999525682783769378359782395343490816952606681441389155883092245236826759697262635133762404311415714394117525726690363732864821985250378456448599951306105849733643679878698574621431880881420428104227933488811204960467994960026765834756077886486072178975555833266756449553544906034194558149964532471305330105059223771889383237138968919889580495863962491125017642457999902228772951235519136630598689243351674171905118462144165258469366730312513077695537286916376456480400739608338672934565077068442156018606929654793036214693311736414583581537606150220909035444425137657807048687106853676423080490935886496259194006430786715609577430649147596349949253306766033579596097362403126339643016442109749762652884789190970158877985136661260158219219909506699470810075950984120799202895683761461844056962314852107031632391812697383371496757175274147319660735289160623437859416984405270581326274573389539805576399745173874459233197142102928110930185199430551849989254824712721957330764073511846170708222559563468188411763472848902085113571725328606241150771935414915054109323601196972173766520200893732574786695781511122485153044145878741202047829335384343007799930551559368056949350262301447056304240767884107164245157034872475887751901001148985586708158634213567033826606652794002722784743379694876353496632621106040287813574265387298873017172375018704585309969409563086991580762670823004933873599182219882418601979892765071906470340256580007736568679599057242293194017590173514539550438835790348869703611552625799091347286883011648650591979118944458026906212378662050827033605427526763345754895483122087820677274654513821279346328934686137371108780859523603677163188050666139319371575621522154776359091837450950873031564584504895963068767639804081460407012430590827655120193184781132368869637932098236244685611068066722222696244768794576384613717313898593518059305494047394982824751416299976653047519114133341393116956184729917771265361166249718563639525789937013672053298284581266202586839557138851779475495167610246265893822981071472528305880124903711260183379892793458358060684149493170452905657865184904259854668461525778711968523887273246669930015734500473894320737444452893561830941596055939816703689615369326001565975392693264625193909196665102881190730068155544202322558005650366503536191710054322777039079454884163595448253480069995145513652500576778270495532156625110630298277770483969758444356352044138059132646699063999719367472756583466241553158805840186937200883774786999142314793216922417007847842233488313085160266558914492476723462614869981149213361685578141044437889875475532005617713802679841528820568254565353831721215658348494284315740723529396125668653401414491704528521600728203889582473740967838024634276053163998451016906277978208308583445588552976638372422053160787713438482695864688369002981684387745508432219970368787058259188009341491181805924886769953622699686406933810964968835235445384846717120321626025901017786775761233408653612707657145325316360534350024106901538344836135890401475427632681406112886021371646161002323308783387932305862087330087752081728830514640834821330278591647731551623732848280739334581666446854383999322800374264194080663303942053560049733752484857237800513651512032238574962574597929773415082473386086010789123900712794865503327795524159834008010474454534416714156437182283218676571951514659019901054789570401297567086116748526662740428160195101722466343605123175960912515675856802948811369149828169484874454971358424137417630745657697522370901425747076272391713461080897875751047420727409024355813599793854658047253531486415141827163146342840658376521971669505997436431033973598031640944585941133055206418721198749200581868430594611807124489778868517447904790122583838820358541190518092696219125172841321113798636130684501477320792945933603144266852909860003871397425465594685202564799047388095552666649847984028666251228333533997525914756120689436569436031178593592132620942999730939977789092627969063852745708448281926497564914139409521897265141449117729962651094500422969746385205248765994498347249946995417230469937900937621808093709571792756032129028545344556167542975390769923361492600242373422450832761995566204418240061567218563410386189452849199177292538540750965977770489191945806884118319913827412884946457411940812635202768967003079705847093802580413784389080793833813592101689307221825100448461470199444917674799514676234481115064827682080829624530166837524512940579907466585676846319894152652137572806326889196028843405864441616106529605782841241691717775352733582630578427924071969760398440558385313398765392529520685313690829773534414368768485667655473074777072370407262953399866971733509177851546904425671910868195979052505637438177253044091914733247897923531627455357214906263493644739511393103639708763856787367657556617482516109540152668025064290512344364784286901275473839726641963160184213364196684451044246358670555351780478697193272907025786353381959031924487426207678212567744414191252207388159942729536616342833463856652356256054497537452147476594383520549537174141777563061723334450629835896704563849871562205100298171212924352373670220983081971575180546320661233957736350037847080843955483032269944644038401651968514636472836776681039576037932364946264866085795400716866884302058838297441668145653385051798293373720102754850229037979842946791665951351350368500442014704210286950747375676503106896297451799280678076878548156993653498009221012103091490956944507394009793729308469197142699563739145866898714289011518059316996790093023228662660962002893450633203764907034405611330616988566757292321604430092732427768374360140986253237339111087943810003765870344676119110945363529778512571099817582723041688166492505096978071036196005663216464325903532299837546824004112663082606097622835221740939763565073467580948857033867935921791980969097489164084247609919332024563850963098423196375387636749952986430018577375749043225847035533056172136191747285557308984678153434692414775673015269095554728432930144830758222070265871486300790286888658922733792493657249741598929199790536994671111160135599368929367534679009801838481726450425035829439015144512570569051007310779730327008205782311705165932305729939553835370425850079461686941599770428350864713378189058921928479338955736663168884295428446110782769383055797432602929023023251840144337603227779585367760935614836977550417310181222385827885686513496605816925999890899410878093107605412598521651721718183992805754020847723080845495239142437364825933910122549257054043142401480340865347458407426053043095666326405704014507784291984443084648728279671655068022366219821867356779870848280521844416211110751412177629863317211175392661632969605061140058121135914823426706366493282490890714448441755453344619683832114397864293921821352278312075905332036804959958148461616572472276077203996415267588630313005362128596961411525614347232834409433840099541384644533678187445063185959937824344749889281323666261610342893235263520786921851202086370734499507689487945894360440310720679618399240442122286720637706616047943093374579507483770895480188571414495264968532476734468955111621896780725903503872796336302879947078371219315863714509236391859619859718339257058617244026255420705680812425834769311346208177042359904986812003323576141647251923497402016714742337107554158442288312112957423894722437693257418066221604024737037225805561228614580670581750972932670303221804488037001781892356066161831769290242038180571326468189954541954592724372091727562287046099136703952516457431185091345617577570328804331496466672786889177876046012530812202937100672681097334486268773091875276402152604535744302739497864403619404952221903471467753034469721624529723173747845887729004278240160790818282867364419557091141918510233759568303597789852382284450023895003335794689464924982970554711041857102666704978709256415025804547141275252633433885328516214564307134747762662341955073460670852278840043827791812093053004565278501090771180057175898074465324288920007417244057053040748721511304693645090149234247324117310248251187168129989548080681454496165784547562617719969794374313227237729810077519692968862030748412096116526857488759959069026311474201659497246977806065509563589618640506755133177797706738294447830889008748067342220184910756779830763271211398540515849303156861998922883874628177559956927142283203636896300024636157033621905500105244582709762019274679600619037991371140566274271420007454344555346967993836417493368561534872087634856315000921380763873887603967391375254275367029498550565953136793267826971461234240643352089081231470459661519818824213214700049814266349358958821024037755907170531776624841104677808914759075811999643630357534307924807443878698503867140000602960212049656682919775572968754637377473241535171996212620395797648159067955511870705832195587473523917028281328082118321524933337065272687110160520266312108410296125518670196037849346477128712927086305974908468894254391244287664125484414605581560455187283064575195011214221017243742795223595446754077658931352856492870491604333902225365041119103011554063301749532072774471286376095744015416513557850257690206518270170026451460348698532798504619481313336084812900164549034100193970075461381499789757324048492802065960171618729834533935157030874695302347919185682028323152525115245764098022974433338975408463053127982470531448326159795993948983519211800752999936202484563801116873674586173830163307663919403802813235753124550457849085188693624718104296729611381387404397997934010477661821248860258245835465635315098853344030913328776394997323686348562100086141933620816793811001289938087699360096604841072230910085991255644633175457403306851885185623504303809583191564845488832232562875478599088897296272039091286508766929054098519053600702859754434952401978233044984744400602911969954200869563976551560771105562717734032017195182193950761528750768028043505617107729139043570215920965562215494935607934613173207236238005161114674789638872565661353414460982577264148808481855710245563779957919061447582124440251295590925878462558017374200950838817330609912115546619299425903987859238401582302915437162857867524513307452392094177752923722356768730559887981357078135732295383670434009958877763060194370453821331353053109066346202496183379644926961241254334445785259034752940589226449744749291919370111655749904126637277070407875058287764501456418315427434449849467192499691148226915807197246634939531159307329699175066061045149556300611048315534453772385468130686171291889061834821836208080396365734468490174476205325192171933757830804365603407447069110086319029646045099421666884793311742209471239736636113704754960625308441280372758478061490821832220381653275820600191071510441683384391366927468086858162087855071883570302595394929818814637669811810063926794227817558687859124903039869418302171024976952420621954728492759950097282020110604081423806097464445065380436644691787815431091853294289418875644853988582141624371839905651435169171687298992544296838481448257334007422013304291491597007066010814714793210333088647092472700519104444850307459801761612868994235912644367265457426598020539051915909831695105259113329589992252944017158422779670152039195084521871090230263963327564650919395963885504361574507259745160973416976354746807143106867004166933964300811588591439147719540600148737761361845571412868441162125428582374204021506080299266156029832453397569675882502027766656201496709233500389554376912150357323033079958571682071004027348722113081440378068610495098378868550808515500005548740226982047366375711608927881575315052506675472672861630085219499440994067185250185981340561753723825648763447228214818465513174764858857481830112917585994565029204388627760881202896943701370925725590194148048239906302090567438953743258007605693602333375999538677234328448891973183622923812039830866674970692996921565965624413046213417269140305091152333346766623476724508356905408746096161254878215069147166746114974848361108901817118899425662547017976875621586378973466169431087575238587651338429336595755996334112619004580272893315281510574591427706580090793137743200928188987876829122847747871010177613572661824667667573270891369270852119502953508110030298580687371255454961816727062738391441109931828986021080388316487720970340493864833065948420065884461553983967981829671396502582968986751205868804893297943946252187365753417732544448366368078867314287355033672050464824443017740604428265760218466476610109970832008694429374079943304237055300069688518855140928416554872036214172813443733225189943111224647779726722367440747031307209621482736661639943222468410798235977019352214220590828942151781357064855913997755266607293472038880066767458605596543365182928003050727650926035891243978148170380654759222480914022941124798132525356934820192293462047996310257270596615383132806011069863443815259744612776494205285519020600565203563119732932039156936584158219214971941032599968150836355361791904629261833529328516460478927912638599878148369394097462195966868703259320894427393159554712620476154597067849334406949475957387213536000939569208161018296572280351633053313538969081030232337260561638760458960511308097305283453051161709586927772671486414539184665375499983393141594212499957979007888226314824461166427655302682997424517647867016293378238376928990867860203857302508150450528436852828756523439189061344450844535642095874085508326460415600901041566877541108316364817704153790551277523030399484480114567873809082832556788546891309258771211053244646323552228086814356953724017887309134468475213423371281741296551164753578020710323133113663741109525702739368105580429277625394955893218038429617198188938130423187715318981672467318322580313928280207029405796816926798303275066951195019887614131007998632406155436120818981370733464360273371486217865248977307236535503520824716009936236217478610309088196832192069549308911107176772940298365433831516983164833575083549285352101158559937656857519957881348119455339677378663906840410077121232553064435434867160582508908884957574309896552564477773739460116374346209128946495281316606015277127272749246328041297063878773511239683190971636599792843577462103308518864681794205197334310225620723421565945026155636422949209356886151115807868717463230152312012524955954124723519011959709896409607947097323028340745289733659926233318556594838404010413178970133616381503412285675182961539975828543341542596870622200065153811160470102531465759499518940612093355537091649861832283773247834052828832759657614980102975253028488352478901775790309189213869559333827286794916870918855233693439558694347733078612323756048722763835297621342120922744900878261031384900712945839324807711472489545084516164473884409670140496821405959194685267970925910000279465379606117487709331392160505522874674713009114773354340097436000573923052852026330067056134224464336274895224278643197913360413238837361018602484012806087858885001208337601378062355821617172718833385219655841697394726071472041834215903827411944990681259425091451585307212377011840983737394002628204981808470745748434721330220100588470000005897655907568289724109183168400685026678645749878395188211198290347529952173542583027055716990551882311187248226917132943790718754414395595538314728498793254491829942069764711959914203841731549989714529845841166017688794707846830855175640223476114764172594675934883216942568909494025685397095855586621066022142050726785389856466562253564708188943616289841220761002264220695904095498367862554910869055133622361363024880345205187132969036027287615305968864257903998786137670115032115010574097037069602991707733899640443078462931756686125160690843474103296962417944836626255804585956793791250237661279597164067412331946016337755389061329937288937083455848392823518906842091996436228919209627819539733410189107232444322146484344998250836614602701243124425233896533247962974544461597727390036840731738497785276911062590134049697980149518455663598580589977026421723519712005591720631670478392487576032134693863108763469213201382266402360002487587041545363461844731247891738299200941524843244488452714258166364963328133843377640636258192178666375332653447465796936096548324124667993162140751607537683078599732021106638042491865219216791552132838429108424401989250893786836797532242325876767941600051128953245075038340821977002677153939327111366109887586968742250060899246428929520601979890721625721605851734493879399169859332698134066291953922276844209095028898006670793575895707469806050177215821455856650123118091120936505273918542330460387611397964468002259857796384206572051366403347991564389601472867222862975757007262140538652716493568892088170110146998077997426516733470256540305262468608248686414226467313307300159569196487688722664029377719026651835736697095803458114733116837456384763537582677466481062517247103038613810926549212030076060582641744419515909259605964290876284995993250050731006216455859082299590372515106972719693807432826078946962971675745716005083145631943735772138312928251855338670202424006235654183974817065950855436960604909287758738613646672138850111543714319164167643854167594923999299922309808881383618558093369995692977058555294341558380910719528663622984463910908398879530219759840563225205600834720409609952289343289962231250745392131286764705858004443394755126066339727393852444223450278782634239986648577260493695917279551084337173270846395953890082429176665347706232313683789776400312551927083847330344563789879590094861727657032938620468246096313674901675667676398697844445762104752153888347214141899850015599368461623361677290668639434337176313688621347726545222337301747814659344650240871902898631320952017616461446485715638906921586999287380952755089550562301978963998634362940649726056408443297574337845254972430810894490333251721636407219224524348037203071912281983738470814566174990432369029926958043627393912003600949268825067977979738503217815511920718109439080042358821436782847872042503412421044114995960379592478532898140145100299416967438327103235977829347290879610758779054644160358401378751202415878280219523790219967484423654923648768486650767005807537018201496923932964489934859075683385408600264261381591284636580928116655845261856607841755702953478886869588717604051674526318653727881987987375476457242890008157981697204354521865512077402027276056412586652655027268510062208178006591221803201208156692418270815970988107974023982200479263610831956351341760608091351512414372039698490881474871607914595389825987369639823911859180012158584003454435319243603807292400857006160661918277036329317699256134626361924793066200907993464541015866456152407137097589598683490327933116678487518514134352761880841823359350553505491579984234862253400536451637105334330504640876764870830508688939875350808757088494403438262349379563465096243888542448690674996334071416221830948768383600818099085233764498485406853865350071718936878126172293242827947061991190793345340565903306416587730235192954169742532126674913371543294108001199031835821619187264933272642704994610810019003780652807120045353141867554764854645313616418139909057957042478285743646929720812547014940255798296239812075516916350215940797458591235804041520184200780941861531614118076931782834202493114734302490218349322780701136223425693978594347838162014645046208779832687543068174384516765469819899640786707102647091212952391258424684453432709294963903342544411002876397092979564306540427872197407644161263529907757657576697549297446013474645513919897932810573321239430350322832452865339472642726806148850339522990493934143783096908060729918058450332936467141856270011900047397618060782675209915067904423030997995312329083036929132464940808516440504570455422500473627821784395812420699362220482381688346592976323584718463576141863086812510356005271079549182521372359395881410434896141420821393291299454825145499859242937879037211673684402309977030628518501883241925066466052966380494272296796445449082233783052817729806995490895028781244544132912009514059438797015244879609513209471687121520599502781984264344072383541742620312514330382841559422107211963916252487172458136718373167505054035548000108284468435999454704379697147035829185306803964004523858295485132055793786669088962006533108137391856881368859877704403555395251124237913615839275761398179585375930507326669427811955373761235441500591514408642759874006215885122740808970824968111746226542195845070353704986749248041303210640815995696796259776061747529945146001525043271783761216455394969532477377552466757404936517514250903551829278151740007973658634429390660910933937664181807381186234604572135874579544105023176101257291057931567765550423744092657646632401398434267221491803655788006034262638694147540743172883993799604215118558367841320659414601858983629848056738545398844541295572275845269283622070778724164807990007616338627294328070193724964695830224700704561737448366439330041936618025949141508142268335744781157814899960250511294520512788048086503027052842631159158197965922880406274478236948100292198086393171475915333394838544121072478702449289541514696321917632262733348762236398642973615051045747455498668645569639354650575737840378656273426645127893726754031812389218600035189346321062680314368739227133030034409217970299086936431900507056614944100649045303924097614770972817193523784356462584247325933803749982823920137110610841783567418443367990703690356434276925705863119880403386920627231246700904594494078870433258252504348311067181881367352028535916117368224894493828092295871269578182296315915436300915686357757161412790191560063954065643484448542255733088941367224356450064248067452189919412643622937146063293126489496146384132641900233387700637777299905754672253250988775589251101124649023968170847772315111184725914352042047016371178469666591453306096527171615651544000687286841635904513358687985194142765651665260130760867698731322622295448924913468874215659337904760088562416056067206538395293670601318033005192240900597697915562810559665653173111745704901121087596145324435495981145219345744220849138842220869992533208964612754216300063077566844348301643203189603687265730852509056761512376496287314578762520438264784631409569484577294962902323116375241852007628274524283575237284662623243046926717156281354463198618246762254681917115969890588948382038843945435273266981715649900117020995574790670716664241490964543175550556696039373660338482057722243344870792593940820797872059185181953966097166182299402061307668805656249384733726812054221718900898486719170313041255667115431756293529904337350140122363408047951531057374116735228666595639466427479180547883372781991007057438001463998792018694240534030991246296844867829269278696897507715331107972236852480638947120726241886136463590643176407948284231457665532410309356444904204164935902605054075647413273114074252565116089680847410329140225847568257867331552693133290085171949261862341692067362178544191892990263004217392086632005222235089733850312237088239477900118013817964040020627103179818002786305027830862560503729588704138960711052205617529005314312887631676122198712526925768745225340439246596270969011933827675203433913741448579218352981310693025684543237756129324022487916964855292553682720202351859439708076864162515881840850890947092435090686131020448822035193538649840613588711333447655820856640124579821487553764881467688357203612763421687613242917582986165251473775119386461440176279228705549344103991818365706160112232283301675739650719436199036942894717364497360411255564970544158467521066714899449653874109284332312565479956866910830030624129613354475670068334848519548893050594992250001819179410199478679333479270410611824095714626609065109830945802961419228070508697265794867197122575800912180587587092740886669087786753947406438625974671422131462198950307502315166350023887842375740493889492435123397090381662165931712528816156590900312920427602201316922197778913704753105561699807059669060436808272727490978858018706270068861345917426926236821529572329419677372613542517826118029485255857438336391345577285865368518512945800793425133701646973922894435375877439734914409312554758997678105228188616323783199650960309764450920059956016808254440637925650074542053315405736608949607938859754396526790717136774109393270292189770442681723925401971644508840046270076502337227502540405121702686267812570177747203743984749919859128431919594358794424616134951076684437799899351826940946091934268432363387301531210382933362764441177565983766029755517228901699901146631369426579164307390981614628771256787028723039270100877815307886119459594246679747191244416435257655290371600601174286256616735517515385981186892506808241994646259437306248538757301157896785208000140368336926257981232329174212010718768845618280297676038636969947262561470763680677687622327309985421086449583425546470590231870688427042082295126801978253459840840496398337577562265993239281591315398303869348975197387531942035410611576849726496742961185709133694383768266730076381442765914205202804369990443994832647363187357567729938068516918128123667046268855357612440802719124362948443159192198834247635343128771825568498003963245274089090243582500505598865954053515813414423972483022394100530511220410972530511919451429686449466040941595182278173802662997970228975364814721488804795056853830682509952108591801112727735926706340201708966123302842962553038318157379619212136293891771479814015619315561704558193972864303294409427749323709873684213556272250807358890299192628533101592769033356162188329345212156224721616475130222775037670822473958906021781165608694893157813322693788361818153371074444709660732507912791021713205635307056477287065641210628362544162771891218484360945726907850792908640308580503747491817372966444111115110600833705590186554528838137454230735316755286058642207074954100317602261818316011955638186363789003268804606659721389301265170957840557837158301909918144435092913801991942699438377093032217055855470071096067803224534656341792258675001781052695674703196769862105237198049239251777102560191524091860501187768353170029134511522339531823582065331316975494811360405926655028892714350105978537468312171432692806849234208535592565020665954152285495471318228938185686975742823014237989453186452849317263951036945084433130908298046821695449747052361119786642229215350642799968014333701493006171800493148183314079141235602468101127499438782861821489027666401175183799241174585903332557844014958639100553601781455155879566614856122980097868740861594898484613293282247276512243561419957118406268398585105824357103596454264897915854203503424723277781900097325096256487197118567978688980417259348977910112910767498767116368100321341160855706613923652375087237543620348041157865848139291101953543356822571536348569134348941504783985882645905936238423568309643473847847087378770928128976176172795461911233203746259907901185305175806803732923453105731643975275493300563529654799548864948454141359250748879816636781097199062348385267343441248839023246456286682927745742876788407927609755875481209853718670816906899935455414618251515515694263843758291293158530543747010131630779495983734066474707265584879035983627672659116936178004282086770151650601055719750379026029510579849266156905804952570758716517572138567761020907775677810053194882802843083905041330338196346932018760452848109180092588485916823171347538100268208507962312784281290226388828198645554776383474440637684554569116251000705344519074966952852901377109057899367801562648859159333194695055513361307277985111960101643185574484620314198608598455039903503178541463198130758131683423131135485424073460219694225174484963067817420673311451917846005489331378857495564251084309347152477330572546440320291198412781575763541314626824084880778391525923223598487719891125402555010481525451111808393754239558884412321087575852175294975247093962900995622547386532497600919694752509994460837626496895553047709555903823669455332379479180137563129230538393038988851402620882803124808516476092063087121740408419733789268236277273109054407331699675473660982463940413518508293539490309499207473021913255706321099443404069879944924615999082524902152368321338290251103138019309366127937640590650033741482197439481301689606527515840826375759254199677971013484730020625723883296062402080887216652824941566672760401220266517942187772609591793192179402436879663975575747875638617787193925930727516623388726060155859318261086141989027848694781544496564413506025688905928354766082685436733178954343245046267371959079373276190153101266302765694650459694435610721047926371371973463266952905444686559750219582801188132971305852971144055320662668905238999591485402218308642556772747559501505206016397952718380330332240372792000488654941302958085511980493979284523644899476365581621932443803604901767313557877896847806958695865338244250571957919866796507336221336277374732736425100079232169798509391033268336528457550848039258164983027582000920205052192424296520908134694707480139913540110575592844229654614878704455987627090763420075300160515461096378320112522757933020757588943942694938437517107925728220795027818193045457871272631279024477191619425082218680820543479944557292318138364148885621142751244451322857699664555930011470735931177209095926882527260639950025661423561417533957704534033041704298661344778375373249818633582909065120289913173158315454021749268423945886559900723375790220794373760292406051438612776932507362007995340715685488948010025368846322942057556858422903663884393780320360573643805036824047453921119516522098360819982522008759372801442948965956653352542913531251597838204779314099683297733166451086320992545366977179181672375331471193519633235680568952677769250508970253907270403212096785821336563701344989648630715868730540467486362038938892355367890236983247664905954485353761539507301394738986739464581397268351302352366078255379813954977445087851172708808471399547353078361958453582560630224367988068313727704342346952301663623681293515758008643379179289680230920196690066875325378329755933043540157683028529492290056707775305006352452790136068103052793033329422760346203570116930433120180187136407237143818807829472488085541360325699859673585866230575920162863073955877273408982677936124374502730255887504670244941830848459473162130584716046380087125121438694536415239896105451341995300188015869345254931333650730699100027525536687504807401262518698199241439751874841930889436879526035336869055358664633481184679492350440792309733155321648359819343623979046307646697036452373517045290128620287838272914631972091003812010038994106113853586327399098042703000839080244310768459543797947588374288679180329316099384586407064314433894021716675864868427657941033578052765134266338760380500539729182739635880430252672110550389239885110952832572596899338655526958448263798762305763078554146022051365013218606786778620091002928335318572439674252989746694193467517804590171984633181795543211015087782833048175015982307827578499523553097431710640879476006136805126261356258860784666544771531668575957905271794131816270976739522158818377950332064689993769892940295845386279794178516119652915612148448386881846724009367151302376279868069141995346987158966925802174361927997766883875835945339193528966772774249614440553133572027328033519424597924002864593797994799557668371002013214028909819761022138107694460289766795286944464695619553493821498494480246088013903522364535274283080142774086413418822118239346675140945034202400498584182690142332076005264131481932292125273168470498388886019318832971949536755321197954970565497987986288155114320269846413983833965176053073909259903777911824438774389600479615055964915050280936222525088994011732428448751810242833404301718029751255304721626924377012631612026465816602731423631599680615320500896962276499223240093250935073915866514861608144613059025860975003346965845852112032814789015553988073653375824572552792858464983452706589376732126579584687379857205764362935183142106380458828010931542405014293075092212370759731334402364866122963979316833885893423967059106502366502168197033401365409875771770770192393473949997675029757478913736446433251590648178502043626860945593393463807087391351109497323311384516676227386552241611902239322792661111844884537152709314030763085184626782644104147841496030833863109551347165727294375041981366867669391827395322329334277559078457237967614051351783937763192535685011887060137671522708473651871921901452958910740638346728617595884526074040961324863305540245928822099809451679952556667811951424413333838078680679389616509296138555145430617531907036890913678410246855914162573683603429533331466846999394302371356372312571526727647424214170081840040761266780638427956287003311449303909274805347350197954715697079528105315987538271039831278609229951969605970765264270470850639799456173173740814105609132296079394877205127917482108627031461993969523039757044236130226353843463132722579966660396546154938829348560647154828841786924708135670590693379522773493608406804650267870479488430019088459284992578555957719958422301577963905437295578703175788367820222612607639387986205540091730622510845966946774677895418984044029850700335783794135866176198032973137809850858527162574622129096810573345305891479646780847190669355239702692194954816816671590121749177270829006814574966391714244138858177441836298782800481888227689437506530141194310127345116494934528320797455574941357176839382042830199201674129639893269625752069725775764870387309217658242427807517775316996084903476929895385006789875610932449828130606832974194165698533038512073241024556507835545841750989357014761842361865453939161866787355136367908744813681512857864470296854150306585450959334799572071333120887697789587563118943531933591989347821682650555730147217631434490671682289313872862541713604556242164385558000058612575088959070798086793679202290140956533183385477708832890746746392854179794058755954590756408756386694126512441862237359665089167733452638086572478574352132413961982137347047886585064345993867882035323850343640099660828772173613617363389782559863625113705141326321972782085242035707300748701512195393158092940636072490393244964627626461465651660464838720767481125797918820807677621970017479414936093497415541555921105100561218133143302007429784763595868411173056508947426742063854365473294698292350242870339192529636279333793147328514440373645057062233103639674951925304524389910122290103371349010206926546185090278898883333764349494269230485908734500728341877362191993338996637963043723645835377470526554900009858075402920989442766222839591875145328543809356563938708980653299082272527775088530120667282828165227194943000742870304818588423749370036376962121576547061003165417751238423654614147822591044312194403630475588513655817685628413040650628794329170134650280161529265214530558626242249121310329520324435551403651412706838838958996751227079694861902227790294803382533475012993475828910172795889017852325937226644271070395491973002560000193284852589773624384348256879848365559003247957238921949578776236686754670308993730653787492045691437149981323092942329293151973364068942169316138798729747713735079719690215508588150445700950532845853862985810322740654394078454409463002834424635656207215216919241181315679745898582872053559481529640003811555634906439529590398300439475348912010366262713978436105063317885382027308019125374306388555868144034750962714245048056403006710702135056453064202217696010275482825918084385457691864666954691839263708654617234616197789548112160364270914521502656390403341029352271744459836968234135188675951739280519590928771961839876067436284343986226508020187603065940003877098685071376622139691471449046240339725791575389693530837574625976114447019735798345595084596877451950661675055981291841704349450172047130912092664533415925689780146159384419307505115082709203808714996308911449432230566734160828943450614707800418384857845681232931172211495458212899568399225545692004005472678885268712818475664258842148799555632435375577847774238181193338940464365894704662219755202972853724246733879806257111281114275957095143817662625988360119113812868584787459601602342935703862204922008830590543933445530782124161515359329543500520632461639709494655540294428055202759522832325891923756695861449338136150752870119859537014823147755397778348324705249668526238620788354605430376005485866375893711442511915809354174905092004019784335199153002990924297001535573517521064638921064983967791212206802570244372016096874338840329318455397346862529752118324188601328087934818787131544636515311418927672648125776615457637762637776578285025480628940225012381585237484808913942706181250111877941167404397795285561425234177416583315974924655256746701598776990756118646463493799674980644540542643392721253118050905756663209021624023118241702734643646519797327570039923607291200539815769456092696114568953484854331152142624380954718995278729037282652245013545796656369669512132513532546971661450847734880503315217370061527541810764297735482673512136944795032812489962514496171160937341959085606069253092421199074539713162070996757817674653626595920120989983391783913264795292271166398934593431085509383543095312834634971160372111895867348770799040968220135922227550222618003308293706234811539663447018711723935079330500179674120348026256292331305083126257992097000719663700405395135414989476968821379116308326718333855869700923889376845383765836257478001695003954238161231850699298111308203240065426572890778512999900256906431059447725402001635412874994963894584705564777174391766351434492845774395501185118860141059238388865733579258108880157857561957800594946772905572915746401264124055209459289764380609681122565141073823586682218852757926976131749871464743429145412548291188357115799965349738903817668436014982956426207092633419658283359994467744004835088066622365726517454217993825214753019974988263782111131487718488748119835450078883390578300183026524214536690599423456001115587586406903426197776678813861959606474996175104549261589594721374448225422096371799841875443007481813961820886576463897492194423218724221973870222716732539709906643815448586978220351403757124824242484305259529238037315327458791269066760397638660177250918104071319466950153074098613200306406701599273852536310768750762286510476616913154967188740357201867146770962097081891334096595312205303180968296692290756962888038847514845919689058685629708733119432929788965176682734773636245244381556777709562235226250056176489078597987239928260239575046529401645523660033584249735176540025195300425850020403094945553579318507006080985750110615006861519222282699826176722151367315892585408738053379685678962006605165294845537322732438389309667221940216012045690538064679433706440804495124053291566352222254681554275606421447330973840093925909509398064611306525599869376954123264087245794708502249433941753813622308175225667845764935334570476018344464783563793872430320007212139679373260107935030379795012913539523865416571903247138670256687828551884958541219765437191506669789056685365728483434349725177256264620698683668404176786035270965043036880490457722868019892133362589493914103485868067345151080291155352343900828066640460185860858742450182026718223110598790277571822191507015250119987268582472911022362678680646578676108320752038397607559146210903565933557493923269635444340576891639659112220924703321491969574933127401341421789551093644708152427109057992729295455977149350480583631585613965804075837637999997519526866875693766400654564845333151155044187814150756268630800760808589490783503169146294150636496744982433519965284141245981444904624258624851655670860201404075188326309999982745166289657749246214309462971378340431924484056453466567123416301467621910886211995778217996715221530507134033618305519386265719522508310353429160828733141596490362977886476360102660147006713699508884422456946687516962704782772921942310784108030320508786964582385376955163744850305606448708905842221550544280458294852966429609489255906540024994036150050093627048596472147743976358242766521929018217970765845732858201438956438218017654264345383945171032111117209303287465895955555547872831582355681992160366893126043574272891183037669482805656415125391410507710721861106271205145035315072986499641783098335386519398573147587353898750409868564797318428889928197118109864650006290271748121490791169166672425206095462831018278774129041008391495690582223623112064866506991926587478683185930280909622420064700095916274009205498786762001676778254725825060728692805954016640571265892421211860781088625550528941190737253666769328170717005041578520148285332965418415433316784353928348042508077661017292711249973069528008159374285302547571105617542350365098323559093716298398038560200020666495806497843988609220105419200921825505337632658420688277914791545960586791551080415226223217519524378578650149270469793735819013752052962405363721854340817146234015180494065903601764175847141387537024094055342125453487628831896690482100563987660649346901672280198780896550145010839683233546012818860741115372081706930667185225014458853268104379475946214203377515834334546787256594439144810498960812294944692568228905247167697443033073887004472567556502775727003311418627936748610081574143934249444850410418679737371128349339698722058641139519628818814781928926793923666995346945517935570134649506812384651482674143525516027663890041872590164657571122943451798769026811700485397696476152608296721034781225926540139466214042262827170589166031702307602251192295300467141551972831203421627899750468558319753450909381483196925022239298306154454844358472775830723683883766524526826850871001796165376136176621788939377519946641215460213019320024739462249121594987776132456286222899115088336796661630730100923029960411463227149796499408647392887519165269321705609451372173058519332710157122627493007815279745203646353662173418218748163559059440895028968189649737599437286581988746406216280764143367877618585368579140691411814154319333143761070231009015562643829066058573454990621312458485464333589760688576810968706427090720603540043417508496786749490890110808711546535048827605014099717493181887472512429400491657152128824676900546078850309648325217819173428756994705197294482028048112184541701417333897780650593227413949216397400067887360054137472891473424060003484856978026304573631292432516198200415743095784742214440843665270438975279311242524969115441239025190576953733354388105299960707232174860011882734475447944591287465772249160155372886364334227909883364025258463060643484230996524628554311373484066738799427592114791030358685433505327095132925752538976529605655668610838923816381605672321857323950230567284077067223740554887068529701741324377200959719841069896984223513535875098956579438156341072176630441885022028010635284585626260564597833012702623184946129114225379273302145840776397967182737251497200478028822682340416813329999507208008850462614280985110597927764908384989862355852801257252809215834437250127013967977955958485838778721313907032969164131490618079463746568035742337057776406738698006381952818619666049190390909223457731184099203190618822628349135922178930359657513852800385608900704968120628724506194223076656079392809449321637142730439889513338244810494060452438804495435620102711124398622911531267424034152534290268771406202283296680768986786901089389539379601788398909077319288224815057017049105561488126902951052537318224449278601913416778703255970984252542227556160703521157878671017896638555799346616414148301760033017576282822784995816071541381968917615296142616125781615486702915667259833496210554016044952200217962459857667840590577651303874508999822657655440075942429487217570094082119175500972037368875188621253987249613034640045501383072616887232204250236648846546068651795419835414999862198061110301871921156489407877397583456958742860015012109158475775181529724975271592786591137888107914373312468256813100259114950947957683600605710564019147637008961170402004019044047120667794512695220903032212924659016465323198770852264852567118567051144079059541477275370339721615198340664828443441754603596149036594333688281997735626337252014935497349222437462562197342046779343649083617171361744153100718618073993867171987959558130277469268829617770758104380863164220460063759975451847813319266509417782818463297837041960568365910793323754533250495179069664672048930597589621036621402374505192618235303145525739514239475245016117093052659240740089557838705378310391632415726772298765866113207227923706949622427200453069191375925904885426506761244089745076410477563655076882755227712749283246059263457151439771209948910354215746994819806130162397261196834898072781532641183395979775731096140708510290159112596607684581071583869391235105857401385310410176696932796075624546931638426975321400194542028851031085351832633603408592128860704542064637671921958772588403796383156013640803579478708435168050218282082309532922407400609616827129559517595422743641272290417292931407225879455125571482303484300077709886001249056693128046021597366085318596525309353341047464170834620519795436450615841728009024163397995814025592776220867401037331594066398646817115245113874299938364662422356146877443577461321938598166549528576825762350330117560498254422235427068226643145014618550567015439198199345792351583149407187214302248402022210155496780501786993605881861542238927513598062137610281454108330930223925511509841809732035328122157763417897222989060304377927307708085594307176800692120887833762334337968213790462628480098054649791603350126512336610370595343346771147147936862849283321181579371221738475484387794987993788580063082116575466398529405936955802550439193195516820807993508720330062469478853305149715890081466362203804931553488911386379593269262502527151835140101274175048237687085553534036650398647596556516300014579758107953666034129503338374953682123640616032572002725566622476735675007700651735311566591852106761001981755494366942215926327506592266116123010099783959461416504848773127864905767885895302503198984895429391664466651305498665950003630008339116524781298828640758083619860899027151796886769673204372183000887446725884744060545174526152665256211412565678368837928914616370358008539056801003861254944491877484211824754832884448101385306246070735966761627898407100913679452654115559348233525427973481277639379481500497786685394791665390659306417449653818894437643705479305230541639588360954378924292359336253937089044612665400167441370229333659270109710310876964111637133204956746465197364687661454339000291382992505082659044934440048953591254558667785268467639378068134658467306698698167207150031505151281849959507895968496686906242416956879482572828991115826034698635811430025658753645735890988953607179617606792463875169658655849190254581253749192526593703309183539272431553976826987311937439060405410940573111749114942490931717472463479584021499121995601703858633482306098282782951053615810473510003168209098415510129732087243509004749826919739453209302362303088174805080992103334698173185641517412742813956743725538927085072625068509018099845455878710901912122881317980462157162675250262289279639440984322860537109797436041097743049055758524124491044205485915123086313755680171304421505172340186932994504137606367175867716090287321196519335680613627804954660814782766148831183308261343868543583418195848465984987166515447608803012930140469108052108018850612087710016043783229706583984236152788683726379389369255926795842803362063315701136745898095169819781660943106007942633063517782582353532182053315707538173963208678801056795812951222043465949099118078980595942127711618201692221063035572902751139047787107468258870996274840947059722549840910221472535024515028920348071888456520706970030458140867142736730837189823686765504090359349023481736700002552105897173208112098829118265826273383932907028714216474867544307841093790898556943215145337204732204236111699762412615176259706645018420100950275326681000758193692300840637356192805136822860694289340624986237345881977636247301725266508072443561292513466955299852049178637289370801856866136866372327210874450120324202154345577187672965248635256174666631347910845487585383701496586263146570502259584378673494193425615047131331413031916882854906431855216022637594655985413665167284313305166822518893544050350824446558779298579818711212008605630529747388228862609549543844220643850028985720283853049775700807739698661968075351973670039271375037684302226462311082729973322680586272170538924944927119004755563470677468290384612544946438149151239946543386433518923915390125767253479072305293029179100338843134704950279631014813161000946523527363095308831478754920435464990156589609444303538896615086425133146911061537712256972609563057525671650599076986302202911905540931188135689891641029138945307868429067950676387266570965804992462992389765236564858968321598981292682322898198954811861006789480122518133387779333081296554177521215475655692859608681574579752984675219669080483360902568279668304167507987589493293984041430489170077911517860107896299186850592394295836991093517747374195867720759871086296867067986243138404421511857028591000646109367628157337896449599044923085222292473100227310153301001488839537834074863896335874310389827634813852398633132827931955952382323337165295261135857303368949865404316474238705731374370714930370874215680633038393638602897600915228055941334550220324243226693656576386986548913847814232288553861428664636467057353130417471736854135656622519031370012907852072225996052334174183689780112411946599695091072408289107757996885745332020554531218427449153102187100794936642371314492001670339307143521778207996601198973748503527627442430037120216183664766298606694148111939657083642888228987650426981246283022344610150355641264700574818825952898284722216918936465627261611077740208910922808540391585947000183941248246251168449114158963232164586955301933832944896851586669937830867815388345587418444258463936685800572694874818996575680630166105025103013263119720672086602466028012563114010581546400656501749712029238417160817774439439994738106118614994942571306826504883271205536869864951185997732290798001155581338038397386551625530346054162266163836377210863929801041933481768297065107964515973973866527447326011242042486023452933570328651759632043391368735471255810533273433202744349057375993505710627407930616314354937193996255424076172289090265811934600470562553999552449660616015539822894139542006326336811132443341223466478598453516408262262624669163473393830645268184582467377256638316037622721692464526406502130190244361304956204069061948044462892826687817315304432718889170619945581449915152874727486528411622947734135389261718073790895620333784100908356521168353944265542254735191794635050025791328632062256036684895331027347252626334707667470413369950894025963906941158104358054121826661086531649439232864544065074624930967544575263963588002230409809233418356083724328170865773031070536484847802510534773030812143147119869469063181710861411104572389677894986884603403757999732904630723496337457922867692429275253943381667817737676356977470141139184441349591682726024376690963417914419183556715215505951599787640051493418905567452683868883218151437029704442878955617132442643097039381729413004354109053701233459657524803554463751088344860206932044256832527372740121629931275702619388499398172324891384151566561700811726822692671293556719750689679481658310523789597293969140552804145039491463464006618320746840467051237631715559044140869768064911212550461960575216765235853872441193716785538834944463024091101330605176363274796596204096347517285197414057383652317021641538093325536718820811955690259113453802437433157478882025563931011874645016066513334527414518792160000057229533133833061018805532196750255895461803579831361759130595967734226398259446267078644013425125690151653942925549457894676916976946592249366939462205827572957391537438636675085170439045073876710356878796088686722354909555732980414854128479476109764734685310769274183557047073041348107335330786453225256341049403819031282775705423363346926197416121447217852476631903155666973000636238121689348059011547511768715930196751374272170969058008662925201600169115878500024657029614231122838956724255550243116933243416428335871536834303217617549252546671253599219270526516386653786858676012091596654939170484986421475993168173262855073910784289206856698061032981304890036744417967200171723219399932091789611911920763590539056609012222888089523369906037122166208222615701431440605239159910131287660589743341962588283676497195865848204121924762110943552976530413568022253403374766501003238549949507594630503873801429435032590444190096207495814017083620888327346747387879762955220710178310688738992119959741859907380968656598891629442297180743068994393491991361987987112228709306812533469442900873082774468013183114149617867358367320374488909475446971652187113810161445713780690536069891389874365497489712264396688341561149271230077996732281524939887387127158493151717938795640863527036796298835856207942472059511352945582900208555749993591431069018589743377715051279835677311113772119972956003428090252161914063772745206942646646136273955812925508663842212755880269640407376106608585546444027886157320848307971162104456152172127366020885911076834296813530013742458215835069478267091930316904027126772352164366245351865569737086395720947582428672628849587432889776267049708704962521061138048322236911934121887922572226521149115711547116665183864651833247579172368533091093056807710344301169423609178820016060367210083058109320583033011156686803373588235937256580816220414655631837068147380565998157582948179638337015692657583040702722902523070649457965446092320689129989430437987692209572421792826434252245458068677063564440663133302278874274455584245056251500620165705238188404954348207509197443315607139953383793791525473009700490695659902135097226172019395947111489218219960665566808919547132844993094407963611636880181971833402228640162321509264117006006649458615976995360948202616357069594155438633808403217387121934050478859699529290038109438385051068198139679154536552379563325469437989262465174823160462659135854419410453854251769425950208395296170907929360748542972599616259259610904314924922179650049654476300940419155613888154080475873607535142814647607286596260591783702636754068279156244972415059433958662593917370331924439214029918510183528465858571256913039127068501756819761197284575122921621613817127428664980037081790627680652800821040947878901461957688278736841340751603208831345776847622323731442683669124984345513149363939247469940869203834151940350849810563128969088252476046067036285805484087928600118948892086435004542885594268828867106404788684437409533301608398107465743433628047980105642402084202389577903480776499230103916037860951231558073860040404159019909308746907879627142473459213842173969746598461506659898426638329920533804008919653182348160546075663880339460591702249942274790687930606692677258323071788134195506127038888266210948397619394765038538160373011800486964760967053382448523121234613128646551196386832419733262085971403555719851700041968833941907295198111637946707466635885186711126111721896116289330103366837382296237730496128029640866133916751985475875404675499000566443085673352826490892439079273160328813802436231189148286257211595902140120130146093162322758818914320147094385803990949844900828521802630761916053599858963881963631502756697899743505609269673467880354658236987381073339921615605400320351868619388609603653371367882623404561043268169824249371495959555466091988327818441850044250653064295947561650873734245812360755330823739183313574634637185720636320843595859800447481603913279723440332855082155989737080767078869961820615020493296233260839856142302840477886054914730848183826541766354421827209400401069788076230841583912061024010415642666161430957670354878124894818614408882211722695029483660549805014234501045707693478901656322008002472377117730264221421236665469340709914010228636745179429391088626544392842570794000071001782899939989390349182108120518470489464123739315069204084012664632314010818974631628878179717658676050678345270895166441947849224136951736297257180658553755913196629542107802384956319074265614489087420890071221527895106691710395901693544906923381768245331618049237736060351065908669985895598887248097755013177918349421765371266373128369292628673321385911642826191403266950866276815734931332329523905359337827422382640224491209790866024886150730184105245754552142527794226873891576070697384479038500298469787674888905175481427890087924737422823141409977443979859969825025758175399634590679152553744812957366954333168660167965994933360966541462046620357291399147877304687725822116524572228069329904271320097683111032786533058903776979904584832438917341447316328366004419463614770622932300719205355011448952017128704197795899169043368403170969901500018003087185135253759403679453437205441232271306605085422758532229068653315425512935146187133575106064290469943990834267042328284945941084744261686341070427940178586441435657472118537183302045268900757472898458253621269543051479277499846519350338758515729155986291366708857931314280077922275475108779974256010688599159435142021489003204842957497606201840743415968671311814871542998270550362466153277373847848562563798981114309053402599697053158625639139293159126796959527016377016861678576411874721556345048084167544758507078598202172421760062023561291243405936745226725533978587163898116338738559964522980702096208743072881427438366531507275692974969203654810337220774287139866025212193657185540714096355332724390767311239328252117925398779930235183233175930873029314078492313237626038107252041761844848236926851250251494818160153797123357533987959799839569495264338157856034901162786935509461549753510353186542093229817384306474806322521437129316617169669864466892365240592501721492882188643341326423498412885051898216204849716597144352162696252540945651727671369913380706002072329714051008710714513089726181917806634799932041404142100271327182220344105943511754778832678154069337640260670232545320204484982546315895204534512998629170416549454751664560976677598152993464055933403231515767006346698366977232787339635004985434935334348307186130729278597379048562597674580921687416792891677768409804904169729205017051256049293406736895827914121235327992388501549862837988231687746633005496425973720251272230100209335526386882545442012196864620818173514650873415475367290908462366681769859740781969881306810513437192098462619171558327961798722408614953425593413487555803458825882244213508429303450812594844405996496793948842169668261054477754976496654631861166661934990871960973623267432948987337113034114052937325526347437581439029959814365694948740170366052923792287379433119856530458658841689592156515019636970998300362896296962961255946648999344087490107429867890276649006941040160932995838322617757997328580448290468280669503969652643959911287650672448568562946547516171218002696841036214815019683626233766816753917422251697851259132125308693190204052620885238844777951845519110818841088874700506289664442288388389364748878836885026171484431367837263681622809839750512573529901839325636419653109892398398715013801705696728949034527517924200181089167166928857707008789671543364283967541798672667918005587251966155888761180986785648233639589346942940166518013635266364392126815325050416768526658425335882787994320513114130340202885774246044831794088653345864164686676121343797235264628581019472562406024769536268338736304875615974924840787535595056568616251896893770433069295682033337903333637696410977090775951987455774177292720706644783576666090364941733519544659584954036629799008080005311616948740873926232414499937864307641900272638701577134191431852649027990456262605391685814921238476728500040970511472683904501663721289520426017918326637478600264903934534896162132207977901600280943705140607570979037505403853310376620263072660957799180722955936814071971180765055709344710816595292547627630463774119867372624575480984873667260582638555164322667844927797387663543155372039666786490250141556520877365164016657487886801981410955498821300716018097969813464890474203062634193248022819105103351238099537054239480272097624852193966188841582429120680173127378088302343510215919449232779007896519525228603651088497627657482580448552672922315477252120407875706434487463467365889107261380576426274834651997127597522055193365866132333221299809451277704428959480931654011176129031657014403300792578891769257792930670905270759412243523013789799846231745262192402441795392496323707964974066686771717623936352261996544020237943315195895078215043730347903947498465511764720976295289522701826388614164159073531768008772429107980799952099926269216010037381989334010285140991536104537455768405634467016296732923893825272704858420115790118604219495532620549894503194694648376766339921585937270887835238962213549006567202029394894838302346123898308221648314663268566799866916787737251836239367827587650974207467608185981516107063563065266052807453418004569943806196006269431740621307603182224937312636008219298033699790630110109279562435970420834930818107736773508825977155952235524566779093524144080332932410719251619935957494883873074424846050907326754940421117643917631714774174732070067205148216592112345738827249461594066781096165926522525119314290335147014004093334700491637737150193960795988200400511713185054037173251155972666139146788264026446129984834463397131801651063538200824798918792642177712333708252600807179106125752816771461444502541161324971037325352664709098856562652529512037773040617871523384005377250599073751588933871663336031722392641492449255344187474887673257722485004801783644819959940458557570570611769914839293090611811759804939405393846648058147489714071400359986390846389445350431427735219462115680662968528170103402105995851278426940949108213852488911031127319705808972412433315432560688317978296391017895154961359928857211226036489513169908545207168548706957738941986444901092213306225769796747023111074202106184228077253020183985094677166455997005967122591481082817415648792236049380429561337429011990282815714047846294320784889943920046473531691308970695425964025215958714136884768870696862291511665619307772438664327116951145953132660656755395507654823357751939851721681440748072668476517618238485770898558359938639475071776094529959527714167572569874984733456236378022031231425676621123632987677428653732984262797349901853987643626065609953301709165894102516450478424870447838929101615284183755164902702562976727272213331632306779050751154811467858416063770394518631149048687802767246344654362515365552451171396642079806174658273254841323708862226594277893575774063372706416153984218699620784599782113968517002463915692747874396814826466283782836307067698582012903516259546960290216353958040576131215820685112815892381975005065068310491755043532406542018973536008747997259973200459132934025706157759020408582572691450557813351602715730051411689410666973809056532569526250636235752185111128592157270325916314851238774884758122093584983382642419447129275338606031823739389869904418347327981628345678261460801717392799281540027437368385813416829280112972577746887961333636717736756993001807275574545409843222381089241627615699193366074927444548268227365158739257068470337875745152439899060603771994253544599794328068408413826487991386539307389291791735508493558242307010665923705856394664006191146361563962201568243444314682851343376778334487542300379764076261973140703017210110742697572686027518781925315014401664682819270945666931377633910433401066241817456021613086153648211636077261046059491586155769317798311330110841594701667885929008765888868608973993269087483031926829781951110842145886541754897983595664678948399105883240016380269494497724683343396919458583696335406091343902775529672870128944426694476229999319922387943962845243553420294322668800633683043643885594331004487779481439432365470087408526990001976060534151099691989372275530863761753484036312339310546099614479764456574634368780205712870052218099034558047798106458176591397968958043194345073428584083308757453748648998679466617958420093935107612871087639094407033717748782806241653933523116454690573438006695095527998900076357350603740797330222993830039437657819027324546176097459393138531535031948479253359794303901911009806240994345596293552463196655258025772229444388683654068435891167518887093561750235569702417590916411248087541761082006259695341123511912650901350899236993506720935043816277049316795033547233672517762703887226170955756319955628357597216724245151098074824245836971553108521299424254441541975706674973548304077102711854150736744566713407324104903751315481316023199963311918975640735459313832609069008354862362791769814259866496117416085103658878684836320346635713330231560072255935587918397117811166147116026724546304776224631560355222501729751534575337139072496180907049479365130197905258708099008580666397313991863449562199382916977378911638416161195476503126812385946085379213662515553959824299177458580398671639791929755758629093897953961473905051497389351115216609246564497362304612297097339094585290074811406019975083160284444371427369451897033601412568583916111962461965274011050450047935503338456832728200976731140799303565133272961199183997579665576691783122441843627710121586318488976095730484310930534476898759622099799148247731162705448067185856267620588384740679827613686675122221704594606999277239393069353255929620939598498960331008296293144655860979538717797480150337343435779619299993738558650952974971126532213610226683985301277612711086698333668723427729490091270574666547587920178018343968040012750606198082078330598912571219064585782686989242226432299068726510074525608612962713930939447155264592464563157732376608736571528652054164681990455631259867095496409492142849038034382545997804686645699912490451550710206712186866342361098869438885718566181601195921204726349319319594708251711608649963461219671250753280168257928766838722165310634033582321999886412675366372744750627584937545122842870763170367879456968362309289262214484240916524131280726980288797516737874757894496979478437873485389995943595434272747451935407071542874204545624931897407502726427536266328264874277894995052796470561181374051289702083188055432748752580208845523903816900302599630060051494947859388348812555538042611795626137214125601945132222835217299774215646426974199152857027594240159627950513331678931230694232990867050924189199364381128742215258376635673160161284372745266219584546679381843436393333108606258158532235136535434809697763636947876471285016711213838073779299003336586564551371907037094845946633867928692786701669991115961897325312257797272210093081983639835836489087988821162300159966921124476870416934016388417795070152472515206146783837961303560944394908521148950016137793813013456394494299581152858444030102206845878522265687595096207672513713990948418562738157068110664632266326293673836504411532718716605809017353487594941098260817877505980638274378619373866699571973770758548784575959848809797522636620975307821207789586575110117483795241302745517293735979209869958737538595838659612641154964286595032261883692739761332508930085274217451923615467405967090048865715428735726400542931590041137007016447736767393875214286107606170560564076046362803557514491618736409467132324377327537322400438731182435345573180629878290080547267582417000912493146967259690271408829625771466462961076086593968215344297953455579379009731198398471611050133943574272887394232423798322887582629037215442754371248937249725457548636012841519660811473495690431269716537799764033013549977101984358028903696065491077227366377155337170216244709237688472233451843872693527827377771114177312440269512949392540300727757870931569483646274424039928663545752633663569615896007073820381574416399338952495309813248574400508808789065529241577648582717564862069832086736580884536072625582547521649296768585919219340449329480970766571366599193463067682430641042065389571950080081913381162177199987023266324690906765997927343122743427829840314570977850287323600740180159002535592570674382787482126982960598633287263089726634522905584514675088480857472082569472451046579315135071927249539654663557198845579262319270032656256124662509662463138860740965518285591100551040717277651678588531769297373852868886997907668561306504952837598234002071774156389730251044635231919190935399575865294952666843237747151174957492921744905272742301367312231357283663501562946237660743493375435125963266401275477174382959245023786187377195772831175852450311739384406592742744695619515683121309068632500675086160181050411831518432526104163131200001858709940744419218401491914231496359836394319982688071440139730816457363054149549990555211293277853154674727590415821428890789062224270594944963750486284079506759027088129662115711151458163440023293993558617131683835776265906600934724318830396417063329355350264347299873179023833128608180228823397714234471227280031821956432009859957724640731984603034683537007270118746438060632264209194911598599258569244959142251426266116988669808828272020170428630608195364840392580233945260770641597583946884599731727690684435067250612360638377785966009361246051510840265750446073161700417256230945859485191189890272257966637514421307399807136344039099529156682026525577042956930314882247249129422155081990578863996824172460073011218307673561797554781825686217438465110263099731733460942669310346836380826578057878133144077572391292452319903987067341907278741268570677158008191307956944551761950352151915116260199184124571526574669011675638816191115306351666819001421413253290490954091006964540110243980775908708127304692562195247158070349690947045310786508680446838557824150850721315207737134273506750880616468940427429671306171460756852735736757344680786240603738927297154144324504022144179578943916346134498807700145015715984072341324460530788240153193862217423772390317856085268331669605645591362404200917469154194886949690649218695722657561103134455002672755115586168636616382674129611125233290877151428235578186797285102935506758794233727114266617820963455194216764234837918882269567559355977705549937011564342735503838853637477123164659582579560362179431931967687760516888299710917406721884638119758411452266017193040244943289279393148296593525183031827161168722625896359659653595294945540443794241325090813347467838105149622997833231965135540392622615939476213956447579362630006102337369628641773943440867683933151995535348068082296495074935369419301390820507351981599679405517995844454512017787950028510114296512592842724880505676603336863446955515795917447526884363209854562244099702479810798592712148899151616847994405932892946690042095385598051342372355246258821201387750984606937013370440008786226136730554671171194693528718469837741359199717964782290046416028095254534390314731384101428595867437949422134531919277376280794723655866722595138595415767704296751956922429830862527274148248912307475796831998076299356421598026894872679193910147748386525275295363649234553760407230629317203407059869794164198408523677943896344059754443149094285522305914162441935349693793248781824390683165921057448942123714230942812371714688702235434992824328100464588970914642884884338547987549487981048284770124613166943251047184843598092267306213076444802416849701068885312792015439258982083988625888611559925563874262067744268242907731865486158566193329908137268018333423273701042503359582877661963779173933855774425741467083514950774053060154576447705431320300825091218635601115200344799010192600936355580410504819736050892030434015414245587466684412791287591819029886543330708547226035505454648383775728881020092611630702719216100862261039020078868012283951949184156717879876649970256120298170697838626122264147133372416935171635948998154085626173037247707984222159477297806127846163708770435253947746839018160190883153797853371092786569392689297005164060913680038017026654649176336359383905118815274743202188495703095830821620484711733767739344239531148192619072094696515213088877113819862208088068683504027212138917252200757295672870936865958661947828655349341624283541158767266711937093726554900299611198612791080371988756697682527770020556262239748013207218607595579852820742725480629640543645577320585214507295792389270598948495368712907745718253117592163128344416654526053740296650121922382592389537070448970360897114007151428917094388709259248573923524323904541149815410037933513530571736097764338276537404579918470179192960866424005251678052884447639941389644978888507139710441982431173181827385159155351232193636429944147928216705719351718940936449270894178557859246155428094966466519292421168151595233929984161181238797822233259883528550862836894251716794746674838570484901453788674962641516063428512089251026879943915474274561661981352378282635051440339649182640572367705696382817871521196851460613506537165090864330031744057645823208359671312457458032242383237789680255184340800147619382709697843282307114761132607787596334732590655780515909524034743450600581914419338754703003979691410086294382012062844993309356348277408763717920408530105204260467205316413472278234407969859866048953275735572088697418870555004239632773818010438621649231440277573878754604563753089624206676783466538848321611587738166320370992866239610027397476785935017483457261452540543974686073969893295757805000308727424437394860999172926828633885397266591230207416319657896647901079631826519048896081356122314412126458168316805546608522207907654824254912071366774878004505434538245605212160691478729361251307217929129521283410536886738651791619400494265187220305744849088589177203983464459529763420024449878438893601943088393036528402889191996783813331012482583444174179059186308534551105244784432220246195391699582823486979770518495668726811536785842500978769755509074353417440349993802620339628762673651453891550318658755916237531596883310925497370535069608911781121809097845074706916680587326654621302435566580344606399887682812247236540359338961006248140590965701375623347279511151773305165124170090496520457109548035712196455377816728900496052292309619357246189776124003159894958033731315887288067387363115827388297859879740032541991980042579568073665053007820831071570894141582344452845208214922177923013996267574598472354662232481773722531284147203771760400104774349202090674933316385325490999863760717836316002774844714561955492958134126430651754929986478711591947363344238149337027318744010287400695104099249825226047365210097618729734581396251670067607611739576311142317758718839073439953083445985674935892626148443750654346170182079166364923951139363782748884894235902227525151535955545237629560462883405875670442498411375529580966024981645826485469761391503123851030654793615765129300154674820010132935435635462509170575434939485083388495580844851198637028499330713506374616435084212095813075583443175530464853780482655224981870163142837308988292353661489182992567898547232306282127067380795780513344464202756784704052864528313770015781008378783910919038000880266237523331286541704913397898676994464754252215123948075608507623827325674887880243484895959697249741618143734204887122386492736564643145118981641033785512305285398943012217666031151495785354750627898822764537347596675200731274102291855307694290918592279506608719262119025205744647597260778474928392660752233138471250248974534755356365866239740270452580845521976642519319162487815128020167981252122505096359709963098412205146960983396098019817608476554493598603475554349797576338101185953357559064838154459585938395909882269886858309565612879369854863986448929456360147655977018384675728737309167917173104573931341772566354376697672535850744546210875690001271530602385139954431921022857535021697343768606000543919018224804325104180726947404979661438844945909195685337329354278059534656725382319421471813556102104519132494016930173156787382168333319301251432596303284819801877575085115921568778101552096847106792030519708296842561326451835885360118304634119901783084858916909056650398165966671442693874019383918343195947195027019525466640604715162574360948008900856254159256177640717467653681014779585582957889921899018443995005659610205097025008721070067667310226320186992760604036682378718863498743901508348848735864809365063996883977821547907192432938334219957685601210310161427053838691416117931208498425452201482294446083673186999968997269756918311245700765001993385803654166520408331158163968807999483111628794200884771474854785968378492745830261367286495250508998503650027009863328972441049415275783350656949160751590935470959024249406079222957930729241111956570854002114864573356673872065481307706950016780526130499536781188496809966089640988642084581856880496888257045348255678246442301519982109805485046117906110093356919634992167483188484021257302087088875041614921100633729580503725709765775378046522224841495264017551624898031351816187534758297126833583793589335966108378476464012037868204557550455820823208394439428015659595576537226213500464054969181229365658467120498969993949169538233842481757189367383056379867243828234376869100671638822338270789563222742208690763450561205806378012468085805340287267489487616036393997824172071899075928817411942135812500734297689869633138197653038149613532509500317375519131688348335444460898968177054363473209041719233509915194041681814149523102843613392750177112919246568846062936317554092614149255448558819915952793850643192934696674110386448793637822432703546875242343273433554902881707608276724646969550772771673464118143799052892984417832569499788038016243455280873206298618565516116810294311721091165743845322491685747415102197169548850454396262857275739737592087366897043854893795615030609491795484786920382010140481739929174797844829910704082476529732666804034556864809129410460545130107466710454832105451421910164930291691951118546912334321136188014810759479978213430423878010127609746309971244731752749940129031610319437589078857660138000071395579728016360362231597212883528845275637059369000212827882019027720588745898187876727957199076496796103477039770135830853665264648424285012624866114308298613981802097981493531674753698378307204789310407348771021984376247307707809318698304456565457140830522833768243426051481517436273359133750031625143990229022222223289171612033239060862235587962582038571084675011311934281136115727890237918453217724616066649918989107342422184581506015089394906321437460290088344497661411817583137928971768403640220457128531432540029023619124331981180046568132890025738436710159155089752732146277429566519788490270799811262574489904037108899865243256898692871660169443177490908413992822606753710857272936680714502420099826466404737352461872239782170235529566476300173431989883449078966918883127611569838078850494360756570670875731086108035776663239332623317964897256353381770915381302743449459460929936950438658545008995014613406590075997766135670592031375312431230767300105731325378901692197848868165522237288160076698740843071454196387003696277631332007957101611135702811115867106858329475086824015796144808489617311336056084907254778029642219246920672828712267820110487538237132866545108713718676730643648063598058434407341184508023198864233874484508392929361643610832197190919159080074217679338489944393223845988359087883531006650550426232965250603875772331639149627223601756527279816255179506540175935308877072274658579890962027724486971309789632106625314356357207354628482543108293414741815399693206956600666012192726822302932021826548399519615504346329276260870541986463140429065446905832538114754349559770198931328682500945245067341659473456667863890057520171365034548899257379023758611659262311075751203328742680589857799183151707680138176433212280186368178683333391338178144172973913218809699333417971714268623374271701014620596948721697501199999766012842837458434670108218701443058225854061194606615376173450568711610688546989811719923296740204118579866932102234618477133909043346931580006545772694583854163000416757409582910866444236453427668723979219032091594208774580287172545722447629813643752858563914642225552770091434046950048278957728230759598882629235883866895718487487819128138369892180058297817135110672326802382805631156369246185849936062993130084439520858994547593854657723111090877376095837379936536042782343916077255470098513776108533234579079310732647564947267270143019133175199952291781716375290417190329438672689257250721895514434712403234018189656547788915086334378494972472528149456958306615294499490202677156806308342514099990942050026553926265461303295719795822612660515077699484100479903087139730686178451267264659928970964864029829710509294615528844302591476136960905199502125509799215932453861135262069694538851345682029403671727102777306481273355559231277948912223146778872536956390652041971612382331824894171045712525654463946243392381117496330308136647061100441296816663902504074059646707985021154169416970293226157806946302751154966097498788254167400268751802814103911900804592943805000248968316705478636289303704247570985771341924571346466051968579231558094099263733666127966226674083631847314463747055743490402817750486321577985314193323006347763629540795972247538316547585706644342550839228075369942580295584994341624008658400759794257942945839413730867639447745938190112190528240469201900114088667003479186745655423602474775962977048739605402909055990763898278602106500029722137544963623878247127557288801025048561422390559470728828917461444734549427456456068912720273142769249986200255924574941974432810990670487416743234412258392745924803846365884493081191881246710476504548793960599800928214564870648895323221371135034378151429359124681644616624426135619388848678520516730201079920798469124946080426121895515135930959552873282978767875940231796523700788503965092088605074955839721515698288322726709019936180589362055254613371065177333129678408483326499228615365795955226039576045317776956190726338670878827989449633172614682700085182250862713962316690621965304249662330647170269606419045353501621455559562192665708860650985997425501740268274064261029476338646295612503040398231015321530101341459391004419053032565730817279447799336268989340234985887831180840519643511655149189820015160020352247648312899688474993497305188528190452955598989853350523898111531980061466185334435857515533232043927579181433283874987128433477860802805532845490383330682843582231196326892561420972199944425299603902726188005618577066744512028348834404035535324499034930950936387012461325096325742607094014971709818586546706351472897802781835252292703570488656461741512508217007047968892377917254231866275044156704182875696983083145351853888098200962558909838870703419961897575079675620422179657489356768822363697810860565308422433058718222952261072019290182090295032883620615877911079107327986255635446579547877515612294907636906554510563737157918838078919876388511362918552619345486057153801179751766152435246002297823777249764237996442394136406194850822327621273998157571335989335782170666201934784118048777783097639756394657642777760505784270888430305801999081477699935223205619367662194946636886752444076780767607180548944457732280685842091787690742733586067519146574566467634164024352195781090579868461575330011365360051040751075914266628124189981393120583475852006382746708414974369394606551360098658995892597986460022942672559545011157725719327505385204611042626313472434947762809773189925437365409975837878609428122446166932329826572080804634469688523158284832601118065456740560873159348202680174786379123719445660445528607775170881547609243479193872137376929115591861659126378333206734804348544269352621042974418263685210312040440700274563466996245523387995989482314592609783898087117260822424851731628177301718702808425197659367086240904845090135792573905087697925624444900111985081934406122870749022655082180247448053535585418834668607519469395382850255809865642820899321471401082977986290647539727027046911287085639532116275914731633545848811408987902541773576333569034373790085958067194643976204236190329725779195196470447945219870933751784692026908578800160588852348299639360669983954091788628090968264869993143801557228059125598172541020614202174297067739863558800895993561334518748401166226192956288260888798519309055482016922530458177449600457242744820782853201193822794551418218278603842449629062967409701165971199714212185261378563399816604113473929894680300765998738704070004003832520525847933658573789527482243006284717149611495897611693520721585902444754539779834275579107799924246085427260158327961624612717655417752626575066743212528674835206187433545835874436458196474420479567621136286112119117889864870727307369252738025112099035321013799213092243464445269605602835636073522990707803977347440958077897877948103353209955999090458408533581618585957679783238902039580069625021387392736746909522029317949388948913891771547033878511099584714198453202694773685936850364342842812427703681615565202253094562192764396708839786015059780284093883351452188468206344813836871377328790576088561003326869460133438684375531912472564763383929534409563073660442456969658449360987658619103072477162681000452938916408789335436889859877450053946751426538280691209505797577890453308126992943418571975400789786066260542593340326730392099861066844380324887129872236903621571499842998034701374675102468774897711648541658251905294537571908543173226459498940107500506355810203349225487278067799817726182839772943154570936436055408848483539893404202430252022420453601063170632428803360650634797671347343730829397782385617060942485768629304633017510483003802842498749139434276716910596434646215501862888014463439854730507053794678782064162201445256345273191124619580650159064707637588901829810590149526519949794446523258286849256689080673795506233194314930985434939291944009344076617460994704207374436295589886326659993559419572914711762692459051743187906330656356741126868120850273988294852862737240233979944129554723971557510716405601471337420560222863011626063858342529745176410757487737204793557015080922213850380176662964536331686749734038787218008029752355606077041804513025105901442293969117915418775056169369774290296032844370403271727989318604525988131981060764101690791988718223384708721719001785915880713542454330387518238979824123754679811526572934309395253003135160943185054102775426268031152848508711846903618120587933753264307687943038108036855684701653599837196033120989597595611417321547728517457917128965754421925174443263644681272990758581398559999835063480519877392021644798019683329715980081604426330340056233022058957091892032088011576701721927261180105909254043896969474414298212013180405458846293682215934145130806659663612465033581155675411759954648042121324980791556148203510575798017403043625326839486400969335828562259118540404230703702759248296165516220963171896584955821100803340086193155783483483422777074592370312527354712849181009120075820080019193467380504339775393862239545933344498263309886960533187273136634160509376626146677223307989238995705554940969634071679363264210742680467553065766257814635412294156413172615553241748520864924969473233036589085370440868597233967955990132648771070600801020389448780485424174761638837202227277454692727758156320253612595771861613720670832915190287616156407523957475441723393110336699396880761258307898634405729649540494194356704478524074747387863433740331408037531634900002139027951192469375178351051517188650444142365749440096616712043966882974639141502908146532135141863062748491093570990863713258290187149533060944665741315100051062893994061514034492845610197961263900275733770176516856807321779499017026282364666952783335278720995026908078841119125950587977323375535853457958655907735477009200311000823560785197131624511285602918808755894383578438244647705858158216498863367026529529251432945258307634340117720386868727209694915245029071557546603440478028783579642805057014775831855966256650529851780258099021410321293625369950870137330834347535356238960215781645889382551052967749420817168538910915560245255505283296286013802470890977435993345884705362924894281977888109845890563142452596663279719974519082047721168991711600885400313049217919809440573423163950474322022887948173671802815051369438789110402556067905062359572669760701343582495984158052573186963031548982852664504421667301172441870913451767831464030057922768111804615877402429978715917484111136941286144396985147162939412808724548606732456057632221099314038094201450340507485915826131260837402706659185418221438718362635475386704257262470758655353807311418444434265254198956382371114284317952249519099059816923195324090708206937756225178649090160791550777931599405131480259445415796833733589908929242184948845307178241075014870912756354835484195064256669374749120193933531209617231102263263293620894017996805402470664667818717093856163056920550032249275086775890936056123626996134422826669897717452441922283025544001245931348755884001971066761017724684056194478490178704982075119578195589013292117722637463544401996236384494902432656308753140586943018032593876641994005283287187631708878570776314912394152852644392325734461100309290416238519169148991799564822825829527298592994012406252663673772759075573768194972715459863265114609837278202353914561743481016572113859181135137536479584522247581353703796862300166525304633477190449731101085281158880603923097720299201854120500567212201053458324121824789254154001872470915261723704914212470773924378166267694155110174083596650895068542983669724631649039249565738197751096297920744528861885985668773217819175906389646789086677438460006870011715373974279722404479852833662907756100848414871861244203294100513667131700010954510317631032443941992915847255287930200869191730135014700775635854353866325996464621136831916358050340066562898626992800708423720776848662108601707564640683468492953189278574440157170590988587549537922291088573824693118308232703141011052135427401806809073193919365763851940737322814467754057485096628908465708563114976229177758020260981124551121465193636335134759833279558655571666605364271586429394031844954103916621686505818657244301222642271154081250393821535344344757584551748960193213455093061140280498194028105128280723047119389983164746071574672082199505284104668189347588930763127246879606697792128819759188247425891031568700754722161022961813375366817328634000477176310506838624128790900479317606655668267906714793663727497351816880738907984650196747811437376921287858770284646316188232037941546093710053769678812432406856367157568388542917529051345284044892321792444666288727415498167339298967298259826812459755768054567509896170546448255271680400853622619717619086105072524248805412325533910604843354935783823196381689708500094081434244095426765254596036910559872873786801301389301362786976919713743850621578955108127365287186377645497965651289788364708518818394230346163646452834193463423015542698660533367343102425983586312998522580940995460602796606844992260578684638432395721540651929886914913033704063390956929819628075339039660520920981483210597782434466097579888696438118314764172419830123896885385675297576922801651594172237499520258845800406271937701537760767142870992590640515615548622877433987172235642882398551836329266722320045572016740117148751542735558468354744549827504829043637599970203677935189549924928360086600995290280795317548072749894102119422735864588607998388246910599545605524085363448507957007606204607089461973227877954797870490108148231174673970350562760317037791549717546605658498812182203789545424641855789829040393683053982731963087145323521608333265951557194890995918318877882416174619945586093400749866254808700479373754846805869437948326935866560385613179860891561645400773522094469446782856307537190369209891425175575193330342860829759636640322638902658748267419120504247633252372242719684064643877251778645391847522162160736025127078223119212199074406942760517450912291877340391834133873561276137173448677382341554687867954866405865503583113333279808438226509666306566342014872008650352429430298265046328643938585024134522151280733574841130186914354764820773072652417309063515994724860474847203833059314791934065318104208824665977553831410770210736727791792723239143562469720713983782605745103018223585200399933614801481094113918446256881854697090575747430155862558210329565667636170459925478169644234622770898193110233075729578842422210760613408636348781537658360212804690015264093684715494843338371392242514377562711148655486928450303455709780380023607582881035978299359304735351121385804886854838663954477755241775814288746323309656635075342877363547279398843458101151980265749369648834723206576822876215990344186040925958046788836486037122578848240498775194238718086724174872347459075668488221341179225967898278178672496884514545089222764710240631635127002694632703637513005885205634296039696852848884707250343562801760873654766204568356394310205625090016249338519265223061766713461902397532806173768188866146086377331136221708288656786810572652081126334530731913288896261050149681195569682635687286357145013028417459669284943116466547916673036689753892865833704493297518449537239124906999918305891540569829721012590565074441723495151477796912152311684555566292075039073667818833008033456341746410456650122749559021442690444827767994138002615285094099570909742605599016636941620743349476358783780538647069818503215742664178865669304894630187106570638761089665664218023627321771229165942852838308485816468556877497592133526308417391391309232699111485793800172995411412352897799155016941629532886534403993669259263042175344815757275758904211761165585129693449186084741326857224267608457888229688419403010361309059923115003336973291580473717161356847689137043437424931840007335505028491936274980788676224259667418830827757172337677505791538123277298022645257235905082536914260661977613391698295836774171242721896236256261083251557846710399872133191990055267027077758159730655261175210917971397442932957724525429797521010101490245594279560559123527843520146692216966693230174108056960687215214018864330575709299872042570574280110994539054803726106077886721812065435067795700361398821198390632873067709446930538542943869861088724290217999958953769260566035726188041190445879326956603063693081455198258041013188459564775124899973257195989630453457880515249667879399977309318371204182764905246199292609070303212606655728360060363536187275170401876024859203765820868538284043039352611467821359775207336076584773687048786697471621762249625189737602258351610328422179034357618515259175014281620830953389420087539624411805323449913918292158686701231019245330098257725752144181800933784248672045610469146882982001670283961707625408973554073320344047623699786198664627349500564985071467257241742130534345594063455862035409895873714673687079432889688757095755564900832185750842360873179416135324834901831862956113115420218160504750514829577531740209587744150744851788145370046267054357299916181846979444312231776047613734024076781799598737957493450034411882612602557245178807697829637216787948977846724595836805920154710132639861915585148639623586853980993023589724041725496698947747325013325191229440789944967755476559665312788891452686423987624696738404354857161303905299942836798004938675149525757490982707273807606855492692875222345017183846342582345232566257119143700061475714418517300341920574519039277761508635564596038632810610322650865585029637704780890074223124179867804053259830825397048856576316899044037319080899507875956793320708617231729010306763793351150487904267752937391901536665372960051733208663968335964115433974547761025486323240204343712142824925075609461060400608104966462572750674821707039730937308592410796745192799977597101356040351441533919197444920056508628130827115612913217426104916114818200942842257529295908897046282286608774232827733260881553400977168484242848203508935145316379666145471605721528666792280091107720297086552579867000809118950096877007211548709438858099556340460032269207644669045824737387884469986511638705433724473637833492741870355589034777260894445364720054340993436523593007405430969988445667508482918522658847233092969074197660345411609612222340737784152226401690051918804020294286153537780073874038332633594013744899744882279763735463540174425045869561036292918921984576105351762908045146768487699949301358069588029152263046208378973588568843044744393941195147461684353191770118221310376691109645519790357153950770015704592166999762049087841884909518297572269793115830369462344252762200568789915099278897707527226900456538521681231742310550545577937188482875927223544932372854142587441745248588898443748191726578470543144128083207604868260824348480916204945228716778630902561097741750383071539123799409827175003367712428580526217891819434788535245395633581932218718479789925562112374061713826253517915699170645418055680895233142952837292288658359857213519925420502506288367337257618196889535165144025026497064093710482214538064115705680808284324735319687080536050917473812990829701036980929391845406002707464977988154728047223481606716388841743080102286528713115287473729825201729456406669591490654731826439308284878061047592754186939849792234581851951768490138758232974595890742056835576842568840376489457388985569908971968126632351638994422450143326487275689776158631894922827549196266058386011563006589641711487020965027998526671333859309308955082871466634169137032100567713379109438929821864828187084137384483695758660576942812108679866830718854546073911229983707137677421390745471104704214771210471416110271282779191845880541366886212571867323576072731996861912218541220971981169614317746092879419164596343238072631769015188213733582124012729089222942889327586820861112187613659305733525325881979043322470155940362778828312815396957782844910047166954500492529818083559949660405404526041514970171314227595796192501949826404592034506925752590899743504554486610190640100375138204012097907975661510933340407198657503163745933869438899808952756077966200748035269708715680660565561043393945505241418724272385666939549720225306133134394524444851366439474894100897776984272404786113843972009526598476797154553030988334814573246205294463690908987818373153440664908007125776674052782023156015902868715810036207950558457095113660161016106226183742389356793531423052756036993728345565170956938829767060107361627986671275188282838854681457183192826031750627387604113513055830640776756935580216673909692145416908015981393553593886839332407637813149354099848601573972767810955238926751348737790317182998949256524590301945360075286616439152543969117099028466754684977371480604554082385162431228176091694984998252225865384060507803641991250203476776675966386700137802061081594890833483110935981694604309203663613066312434392185088460712356121228477104148653415579751047130972815415579246156006977533069374317949916603407219333383436143683358485795738788366100797660519324690906099872982531218926823265956798737138122188737046433880935756859899015648814775423134980003495446546976855653984376809784084190241270060541487843175353322521041760382126352342860422427273350935350376348296050221830068589036294778281231972982576834538605303251701468768330363757857127197930719708525912515053323142029168162506629654933559605953655768955017581006781748968158447816108488469945862846380113361525374758753853790878496118914479902011688969111423570976899537576903651604407022156099936701759767232433670012419448106516148892429009000167413487494690895691875537810106613663940607889880155993035817459717112259177195197301416154232798281947666988910465858461606935716468405928896986322896465280737042557893047778391919097094068191051671071753820860381546543646118999205427166757704222026173904523352368988535274288243555305903222073645587080549224328739637353744004003824438073583253282776258376509251475598756168361802716902729936508173507312109673855748158053962986892965809838245740945553048935497048477887069726891751450342569604333197928545240436936684440100505237563263232296156918867164285394515099337236063545294623780471501687953935189388834034904619613688519612259193453731697712965785157156167225409884785812366603100562673253092206077301862764943796821647908788381102007041528912505342220475782636229723119802737054130884478846379344713200999187648949055297695777323141074410476520748520363156259600766151778587941676251410254555026846972987289172632433635266154418028456763962811547279974536412964172279938795228336044236822475469771037461589056827123922585002742492457223223795509057237503514276628611228746405950115319982053648698574971122437109379256852409040255492907164911277222790480163263426136931230411731977515921395488713620260293902017108026717457184947581076348676434665021202676225105150356075540510458674734917398651395893057989094253790839431091382214389863197445568786306839295600630857522087992736663969781907855540359254716265179186889706361229169748066561613385247329450362385814996727551348690312021033986631302749345534802874926493425879647845514267155797426448368503128066671539658793732296642277525798122425209338122158389516082322077038976829203435730987302215408874512946207078842038042343591511082536749766651102784908372690248249431307567648473225534168354660769588768754859452031963207025179920574739242443480650825411837897478693741227936993859456482758470007452227522435980998336431598752597972770896409524041487320122767504741346230675658845278976023355858121527010601549687937404766310722754986283966511443339728403763675193594757141284845649524915950655068800375215853454956253880176540401525350105077292285616604710029787083330322780319630179989258907174123314916304472352351121160113605552287144633201921351272643418538470522361498955194788233981497204795645645125176846653849977091112822157655610547813406528726995991528036834232771990530514544457282168935717130563854907990006748445839176342937326908875409552971523046487910260401098792466158895422410732207966889745052441211149741246938349108717546832173265080855961100105858726101208699991156892527341747049882726543106246086780168500648437415543618914855870287745324856263921841590189112219598134166228587744279948766593021058407472995604064923496476903597280166529289967073980184755449145161756287304078671584695311681462893905349305151695914579639477556512696202370842030133362679916757172274483722428846064056881472988193509690270358858542049247906573865005518486639521341632602885055049966078040571425211249726735417686434768442284653615762398926440642947753236711278293696331778296443968069882181450197717861560038410153081228520561808337419387160363827210334661573318465743726830987962583887099582469106151109301316071697850951237320891495757722434055567610604314312781272060316530512562264902124451182083992877215270368106374666437500963355872847926902913407800688528744051145156430112257940513826076036660206987924501856980160040349235660039195312139771104422181515842120245586966062976399540025327153763134247341697800075173070084275856473887561917881358477407589484189211638055843013551762160591799603924458277772497423860563372286494292676804433211325893318891150373813572271297451465481789882673808623466205070641523745730352754670949140997298675432040287573871754294817112745314404007271171881107108347196300986777533201412240604105624392549990219823452630815964580969083403815067791439394013144313632802931560721647482707315829689775218236081552262354048909762014845386842781402512438742502124867280445583207792452092966657573474818264917608353033232731410047435416944125698891148446377863734084877438360678885883521130417953232836385760326124034921035656276628129367416617684269189230667966034282297663940752518470933041982679893287525254880736790432643818696718047343772992880584493159161073468223837441839903317245823932585094532166398733555708436929182625817593890691158957275405433151584217562561059519224055501428503038996742500201691191380113728865315484895576068135015623838799928167151803212258775552700286086866239611767533708523390936730711750540871176414979958217403800921203864865469942266938324404071281871308202102626544710431697261219796315758388316320985834949383861308743924050524982235175980430425546238083468202741111113631098086297042588366557540884015870410276652333082900848338139520411139748726310441223205068478978137053062630017722822850198539309748884939374002903321615842210820526280183828308307411209687893929340580280709021187497946238187670880992377057078099921071351626870863406320051993370617950309943417212828541586535068027953319474462535217025479546578058411598801992747602297183015906690803559765982752182592337334943044804823537385502042850098848554415985210389480915898838719698871301087993045366962671227832559827557608472674761290870859906512341111508399626864551402754536995960845514389237944678565654247176787440078416236657235257335320322941935210265496332383405333547613895117974750656861543390182354581473409357734411191144377413891141122378721507856528358791619305990895640756192325192244962007658944584579120750891674382845062621141524911713724640142860886786527649944088991231827373336711616322067470219660655203207906305627526315869950917664485328744641483097512040073412972584009945575902090472880394435337901519139876797274654890939314279993603684112563118483095754699763828029339941793777895924678809538345882633494209748041445198591526274526153267139765635835777988297102392655336723310940465226024065961841431412858117566389465732130793914573911683017597804272734299046568530927380145771307060952529905115762937492421437596624562078592517614436925670676630234477671599577462933500839165627165758338719731191876982209207247483565732809261997402938637269611024609183788350859234392928447181518850212647321896594776942874515798021902304798254908847135434635345570944864339344527283579815624359600599156111923335824483138794230665636132382892216708853057065922657684319908856426630077605588894273451273926878945467093355703864421949733422755258091134118267901872012357230411714432881167318929731307393466172830031694010558575939879838824044362082767088438350855317941422640890055553771480515122188150890870392278834672654865706174729222975590620553384839843077803180380727868297069311252561770841682281665463320535654366951349027425442860763627033096172439911850432352194175219557433960043360195730537870851725916384279344091838197572297147340499459961866829072129082382674491992593594625400248413502910765523242587691643654834718231988557454619421296017240948636533208776983030677528517988229891595067739068510956480445893583699297742725688419651733204401335922994307578854135993154325649628103627416802325720772508763128526882206791813335829899860444098108577507742759144909766807472093380344019513296217594979569125519525582464536798660852995897792526315509251182514056104451132291111455326911985956970330779255873298555335372956935355023468452293864403298698444064612094936561039267496029934144610724443031935397348137766637677166467051017155794806821764974607371209915044940832626702867594986281012120518357621263873602255917616532036968679551200206181769037349494599713053406126434949762749262039323778923268594406083344122593098664372920146931994764914930786359925500922691162023989123652559863145280379063461196009167099970314231559300208085799215888387413397599712049645378112070378957654697887512861151004219054821149031261248602199705824201404386728639110811317808086758411664207743066749415837841439555444501022389630907087148882856930448966201540270515961093179601193399073574305892001658826312866630979897597470573004409752980217042621184676289594413112991992461342764146511881972363468138884929538212816641606600533426915876746126226604025416267253140277916462515161481031032031034909132122503793063028867842136562075179343155899260579656205391213307441946143417400289284786134405305790402824194742371685882454673579826557125027521368962566679010436708734304053690515571267294861207433102909578265144721699852090964476067850136348053521154620788059708304816262300068162568825624600750305582304476059537210980630533529926480129834194399541025144221620007710059038749989540366205241791735149770257218664238513256299300111747227691497967531048569174255805342186246367029678832754906060549084792307684827413501698055068065145754707755757192241102897966176470754087807293192451065137987549528234754336746904850908710466291432847249783611758492641693748416987871488016850114302173947145156536682817954951763465475176101776734864571472090804765419365895984390468823897136865334012479136873460599642555748037144212192492053288559755096573808000140500180491934627882948685697600463200807839564855080147519049482187239700294086294686924987336285316797596439814859801097469626875860515013622324313064456371498473985016928888049913111158257025690966440887978775913876139990173191121708870895475304959511273199392503386565413435401034733741808554877193105027242229750258951956906362773506990714194034762853455450890815279203663419392485562644828834341720468630487280374574886647154512030146175407790660373058539164166102188881263908059216485335491441728546161505217838800311819714177940461526144599317905447173563414127176545941646087974209166992694445637587513778264619068759589964827055184012801669943163321189201014671698917932136407697766208156349670469573333222140610296720490499550555368288797913629324033062724077691365388165469304068433171439634216228455304138383717355870608017088028447864796765479518442850889667775180813475051129278838732790822289582072242573763338554040607711119258255300885378261249266043019635827742172957504622767648717782319796912176084146538900244823351498871877219505561062029877386558683112843023147913697960701970138151875317159090884764928689787022044057255932406861111472599548082257283760954488867016866101277273395103182169955974971785195346973435653729864549673081326335919119411572841753426341861042618133343347130732981270186100147619042692167251804265839500298063076932952809632604279570908326681000122713058482457285351893516538837948406020594857908147480972635154961236110466468355377460158669420668920385493110872869631660315986344931556437544090217901141296019861038152456319788185673055309435480074641819410192151893258382230772323917983933481293756837996933135590332847914090699334013580052238540022795965553093034136334528712803341590337027612826686116058350785445139798714465499834073037318975798051731310984123297636492254683167838036500740754749781896548333754854291645962980502632303158310202745572573273366513137745737628468761045162482443888568258810789311576932208854061329936539950590408183679892552324493836313013201067018779215822561275557933276543869264380279055034582745699135443775378782222115993102791836008682759570114930983913452569629658472035674571247160757282550792489691326844024163147808361236355189771583511937461868780585134064742651990334172639204069788813086686464409852770130882861272556129790750562978164378092621732999682885016778606035460591683468847417985524850668330921126430581915633437101539895471223671171453018481672812439297558578922133222757225378167020917971200268933502837812176528456555810148029086883935368652231136173689039125641137480391739804453279103807227764755184492946536105651557090214746328909603370937746434819467339562441343006140999728476127405905524232441762035447307773073931299000041041573569625214817561842553978099681755054914755156461245006427268672992787176046695677819047309789757688373125796707646607016176289508673769689255255078641941692028702612321592249642581160298320739192048772443917420609509534156802151851076418922435039114699397865623075104083701560734723797234542541458807727782295691475495380695336832468752061022392187214356351875986339368931571566253635857785747346474415074883258726766396825854108400775242488043726857358281450150162151551004288657048769424017782671181654906935318884782265156640710178702076692852702979620837884898196672838242779329524029865055173463592335577520751393210290838316836208078675712512556984561195116323612116175822829653124891352193937875004758044616557060360881449144328555136320182203792897558817305677402222864265633731445197987054316695722750720178177984631552688712454071268537653995947418689406862858267151594734533982476348614982748887044707540882482543088253152316754245294514141049341731034286682596530831536011663066335876223834232215251189440738498662549821588908798504127385119735363352444843673799748235534176826023498378802335688704468048226944699737172604681751423690300192247777027544109217966272802672446751885328982726794447327227030395849853716500165447261303593872677102793139656635850575244551563688571858916345407156546597511421163505832188069728419231690301103774154382048293756911845133881628381930056828068238223676208777457252076912797129490659370968696442839888373454127420424096987340010992883243383991823984318340489742424825677351205195444430944083419155908094790768032875685930232418072814160400909038832412277087453269356559769359013412786388378800440535741257392667041593088841025211776693639842413347749163193646563835720762238809747335272274302401419208778846176644554506520197319756004405903214496920798333246151840910640458194874941241963564354853225462604512024771109165269548149631397942142674814903205647453137903916598288813112911394895842258478623900414421521557930625416654247971217250512284588333364119978438743296802374138776993530872912353011107486467006219644249658244861712052228625917972743415570537222328465314136748994318998682107532078214748725927423747893384060084535124531543777490962043816900353526500936219032483139727717586020840585050637407050091794284646413415373570555858598315010749707444159100313219753757833698311027208756209768119705121156180401221030789356705728259328520798374433233721631270318094831325864348582181926693275313242578234442838557221793560974455332120048554094610632347290202845187559275132034693071822179402453115983477609735831121867758841700866977072527835121953172550893211182109562399965019150945359311280251229327956410641188221485314344345618926971655132468084924970992357626139097601141754670307983921593441082434372117198992960045691837123184005279208361253502669848833370148877573286895014367910178331630186681117270779013267338543193392663254642375686450551720143282203146045196663253365931228228857400733325166198741093571304139185503109408586725053149622543210816175358080528951223787174876875718389160353467703571375449519604396414761396297400581506331324812277974956340542033062303781252385545343643116029036149267191615917985028114829117394993350775398419757937469608199103282267073737845426800334917874855579996240615808666927530584399000504086615539937391868798007011253735136442921581932344725177935957548242800456591927819669512427207665488734862838227136381247411062377839580462569942734616282908529501200273843257738388388861813707667372192993733423731960354239697677460350832912742595613791596290406697807939090858988573676480869115391750861514926160489457581842608156274109834808821070824872558669546099786988435177456561892077114252215139664735117505789296734691853712756772110616115077135104628993300031911752783272533101232154878395170644920656189292493535095117825593404607476282735821986093421784142194270172003298023438366353367525818890140530692546559600800218627890091359472720751146472008541358170828223061273625452191792800547681852982489015630710181128984618537909772392932164627150667394656811209579019268410850234020473675668806575643938754510637614630665058165254303268401379423384206450673588425413898825553457483568539775853718023970862309074024721927413098870346511276109383440154156416172508833226132658159778938522134474065321131907582592649975807742461504906414244881470083975557892596437155748694446094362710846163014540809721722897158998930951558997081416846164217144740426205528842311924904348636766499970343828380300570576539998224474263388876227847409747247012628639714590866275373170529983253349348783324324118645093556924572826929637127422545880439455693340361924793407579706050811449490222462240394665961988115664314602818163870630390032822183374590512285126214847605474154644773835581505650907803047394081208229811472474674129237885592535176569730635220897316159262169586886705780935373587478767581549948398494914377520557927176390776073749776540161765050156139912494311815704272717659438303123548286008707122211215421723841580867723497821925885124014614231149394209758066128665493994518449167095490850750610478049223921275308359363998867940582464146869199200788228585077984987479954647129545873958651069834887084658529226135734599596220879144491883293837517332377782484781635934242763902728643093935139197644365181939824996942186530847392557733855199089684934001583272552658216381340977973875347824859530142532090829708028999153852845918509783934574122677684242560437790914632913286307942780662250338253594144996606237100310973952744609098472611280694057674018899877799913655314887680707110452110391607686119431930318106123367618706528665250119170063433774380426890578636022213360114887544653150389968749449402830804942642734305313035357404188582077791157568285605310528385507672969017454046311200192973454554273030716628461445777446674196570242720756329797120730992279321772999845575048091966276929281474550359940849735818120898720394847770649137447231929472566934839975964655267307652297214527986658194612623122463365443206116446505858915871237615901436641780330598110784666956152503179697923382984215380062287853034050047681399668153700633620737892100565635034163485677042963592271226021437976733770983286102467798758514138001683430175531940009152787893982732980407764587555707092883297215798161205138284582353979117613929633488112663634121480968087874004050452809388871732309776005196758165222543143346792171386833811354523611123272884336360111853219829116629018889747394551405534811585710667991980687635286965839922016252366453146833432425276201992800036576425817380815893722439647201470710746499114440445624544623007951969165327442541797875099205539865141448024537613433388703800109701498364972679092600813467072889009919049423599754329839319816279172903389782542919700046882651106592048523695550054134844469270628573579468593156474178156834575294826950744588452199025325430003261600660350403111228752003816061725229305080793860549330521016130427126597666366134935097174347325190056777427909663947752558199304687043629063608278729287050612455067694248713395579567267983344085371534971896678469227739827880331061086492899323788742791951588299369124382801789835438658085114031254647956736250538704778151053689154628059864980113902587209103084459011764239305809148534772328727441783440675117442514931185944781429682627452550251836696886821349966767296594358533753816021538264235941123353556708784288261206082881396111303539307493378341374276979957526720960336195760704000995511705324578868585142911705083419131911457492904549087047305205439390346049777119150497292732400166278536041605436749538295636256475326052448582123822307064778422560699453735304048107065003618721864453966486131435059675348920254901926784880862092634222662511470769505449527867297578694504981109750471163171065262927717144826284800448118074908066366683917473362111427070844427756669158939169285451725221146692152142458911554599340871414612637565355145298901420139956474517985219264994427802909076154590953502709635605578264990800040611260207497537972488894635129564191449016769841355611952669072784904370860697493846770373832373172249727521231385542599949339787888338654464928454337583637318793442535787978338321576656332023057586576110331778952553362836297628053498622777969156927089166120642797518121407178516121114066638718249791151107144328741293633644958618549198572963582977318946345506412430693234876280776062065977107739203269006947121146587996580656385217627851022319496789120467636697840001484734189899176017514206419970895215722174245657221363346501642996369531520043862105586640590337357557607899214964655587688027184715927218867804278940989687461103813415705080527052454367947001044411291768998128361898683649592221926802789954892126898383228207015875751884992748393644548345086003075996887366889286477579174574250795477127397331083534898162547020080923514650330948108787915482123032252861981389659903593058087644859206390319200879536548416294242980999575697094328695966584261048657861051459895443232805704041540852653480099031273485958817852132063754327631504754749523527678158370486009682460425354869720295405690197586862493279193943500977918518754666703330343724357450066309269755387748112397177874954583688469292758048476301129329424623743588081991215354084404478779045945166877688091587997802592112778843975998464120048541151236799863443482880382216371750164317409367614337350656638713987999217028586063663187595212443668971762169548431103765032101063363952927952789888786302664874652764785253068458889029250986963540653541343893861064058951525976189652934179425176342928084908655124837407727162240754995799844842440132247887350932524704520973815284261410538187688043911416698186500702414795680024887331492908567242408012258188103092303143967982108663889502874611150434066108644017291312747030012103159614328527412811007942504961177088751958521314470839384661957168591430522928445384102829319371036197359252898285812211571312017890749565207668320630043718315805726615454487018630701403041493783680732815715216283205552726511263589955070261491344352289686108691416113323441487701614316152708011843610454732103740925088902331066493913233016512915517766303490519070589186130255860738371528298337801678000080251513651313863914569968385721795526434191246280612736015678152017456036520320197048019455133743005248674131757429597132871547635506026753237823961044036374721367859553590433352556272406732206829604674756476833539535425737172857505580820722147972969335972347955848557928485354606191455521765032867331459670047869269686895351315246835291180449591997586467489878726545601074966123862060455272154665734698488416962553070104899533454123100460092275692366625585269532001586551064292100236538075100254237582080188328305182471701074148988995856704310254821737852330461478657476369989339937116052748406015816640138936985621665015503963833653026559327863124944882674714571146702259563244532822103738513481685167643988267481344197637563416399094279704203671099780663578697941361446502881031417268339458214229091270381446900088842873073708049149470981419242997611056425430470518455870996869149316661916906207170571560353567460043966380668882692586476695697501317557501672289520006333842504220398072039019153840477517543308989723492997835826326017075553989201192539900285255527042893395082508034071782204409191540573023944129680791195996092260154035029218340249684635492804052183504987111019449002150423289816548127007620035055749399567058466973311809764813362331922175202565498623869418631144808300720789855811599370549854897720014507625659455548536590456835635407494082713043366488457309839247772775796113752942268085583711954297146701246041206428024945927952591525831331520430289885188053088391089699804898188349966236026816028157603965406787913193279347704485092001991038152916788009458847070045967286814810049569450088253308357831826739586698405407589175947612530150079025716317122646441210551775481718668054738697212231200763403930654308846052129494747801849465572136809540854241119211287737877304006153520175574138369705736736193129851042460032321719980663145523166790372140761496448545000500473120282426444577116550600708508840047703417137928193028677300902957517815694125965160399961216608813256201163504742437085271969051762094424227268367753937758057406280348745307587211263854411629263979113275419928528928103224454509294232105613290260272193900497106423405433390328809950254981417043706574791416897594796068358870880941258013299177263648859930407971629411060730668604192883809766083296908168392578759844728554083935539176782868279194560809361131898790566229625936711692318349153115052961238974369055874043301441426260372421917900545170999649354756545111458221401644499751242957258208048510657215781700377413884902385113125873070766204437734520014592469781421180185601320533553019286822413492251775146594523171846405003568271009717796379675566790100626432375673508547932492523918292724004449559038877950330391661239580781732031300961429099107431519943746065093553482588262844713811794463622530857352706966706592066795316691425979668821662602289247420374373711047778320500441318876031493272298672575354242509013664427411568514501506297374365540623308223193224512179402120510881867896061975716391218370020297824486463091418449096588936202654253035875004090970671623418458816136963771453370299922212720132370363403544063018056413784819790217248635718047468296534689403545866849397727208498371010837180059355264452579377344932723176302888496970394998642516109106544558913840744445246117520308261325145864510357535810825245992269097479652550982768093438787745297408441380343564614876224696761241530148013625984086568234795646944520126083162377402237274636970840894411208635588851546876285921916219080270856638250178201630755145783008164575254839488066446516204361731982492195885607529919442426623325681484888091907917464685758410987533307477640132919114904772004727111188669737677813420110831911827527142321251174461167015270348254911516400391364275901307387372221247276350827929241639037023676663845407617366715339932397142829392375100801180131241155114589840730656606386108807512890002950755038487586908528591768417065212691617273853244086523436748405176288428709267591955073446794256793893800003826357803146704129609671155257091679658875053197103690702245728834551462781870508000367673358616329915590183315782455407425127675771757552546746243820410049184777994023977176898063021982533809751709890814506996025220971310864633916981679493878283511473054155703450905844274899569417270909160350440586168136177836319304330749087029855073262731158869887192949626854314956836870639642372156295647888632216858729171339093833713937122349660994049236585516640490423228553962653178229986351152262666278963861225336410807346698886831271365562013013875872859675334319839526012575086441038739637663532851101032780282292299931679887726397025731945474259888304743283558565911514224283800460555145771074359828900091135530247774490388952239091784932370860224007459595776145502722642215045980257334891116865823193933938477454133446066220381670392786656146425191796827382153231236754967766885775626121400474068431834386119552530876861439386026980148153896301438170579442820556523108901042358347559901640552318617263321285440024617871909792715049212285389571112088923665927824320971975188286884366228082911794713622845040949343130059237484061616913575505880186690214109662794167874879895781039869630253893630670299688807562866027146486256764545874605315966485619370917374722754362327511303453381616813558446227588344062119102185970537968323791810448851222282523547393036313136410544903416346961566236138949724658893242072515858582318791107456868565730004464974366516650981268018323733990290552981492682592990649697342376303842710867809570267158314282978928372415330781418544856338155395469385593726689245348975406895873596649775142430791640202041201828646862820130799632941937065296347340695940095701416485636618981049131916012873956054973333467770377299390969883730306562545485581395132536027649436161698855907810101964056334777027230393072809604239566593341194184116611344189757025540839615447548457309999330492586666808844476491404137971200635832353733349172270879147756030150525123742601705112402161293520848512367934773100922082159414793085321110009210119028979733667879116732580332671069591688228762262159952316735450213826514593543340430070851962565995877383981698376482084876083857030243258311199875840352277629656262951130648159363841602415704937662755884977718030195247877558876816227228299634240813093471031155208361961008776877012145620476554498274506455093872709800281062460824989340012361955735183563536705013597034724297053802295895703509374368484425790297397626688116078634656823295727209133967628886061930615506542611508903235059097228887635902862176894775950097175176534275474583370832529014609931980891947630416898808484098317880637025810418216550184381071958703205730818685169447528850481901508787465215067678257608080616091886111541800400679957798971448624354228360746060054682741973694259153469246733008027623005019652070828667710828770444688665336815583847529123655794015104538835263910613195939944093266658676127724610220843596569283130917435119886017947683027407353310668109119514965528466881845504171950268017672013533487534393661863668730243232440065266259075637722061952263551885908146362744729956754947720820325587867906718716819987963940405139642259960167128417195871651552213216818080036172062639964169691019068360161326615515595784387999581867699462594981652733613817016559365134881837353507487394011076057081947829571027541723741380857727619112595348004268643760628702519091137938281222130347019977640652377668748781862065921375004162096407345466351123610496360875661089855976135178531334610658780964011326988482202169738824231083010504717039575665623447892163953120160248971529870586295030289474661003012936282126575368034060468100152202499763886305618669599453597994869673818130072627577130868161770241071539857498998139114501863819474050017529460212232745929285160509812027255498612563450280592005403742187579904218414159060979193449017176641854510684731506141016736320300528991792939210139249622279560605363080315729002260201494803386859381708944841319532129061953059210126151044707365494602631615446801932890346846333713860792153144497911295419395027978070662672541168823865397728951569090846234477529036460996346305594380196019693946172348282549304680464984755618910634643082898522205255988377552227571674753680681255689855428406353376396254411517089985375163484250425018482495094784631229349213763124706040237776239800416840215558746100452671344233435165340051849173527986865673792220436785924631659757588638194420136583241183909919811592671383469666042867392487645094230331620403716919678880552449375340256366309636448130264750475575713200174287265009159460879875968891860240566049822827714296192133400177260208764927310423204839289878255854184090213358964716079016247201473585551085517349080064094829898598023137795745252521174746449303267223571988663203195110444723132268084944351634198754210320225307265901760685148031457549345526082741138335972447159618834413227362433051034604814208849997669300072488132439081139903328697471871599954436644802897229127337844850582152580829400469367678576218232416425555516246069439324540939328024979512669493935925932457570361084134354410722230017726018141316516478786378929112539186632778373111898662017653700869359985325331866710471404872150723268255542685709499113047660758704046701662552533701438315997657834152726927626933767196131228367802250519937208682983542346633692476333764320864174028648080402852939592474917962734989916107385155671127825736034981325803502526795912313088049153752359122279106869662360717281418690084854828365449649793472327244115886164477206069151063713773427507706655266684070951015009496710217045710077079490934493866564895599337938300209978180554959157976184373933597156370989094077581604897958976823913291684617079531666529286579212335687696264215845446235896276643009180334424779725851632051926810299816907227296312604731290479293224917652416964848213697592748156837809616337834318476369027069485956579312726990262826834620692467518641505982594353052487756591948208786191818488142383321539853249799968639206262527123740952408107758437253627392692500049486857324514315297061740161007091152404445700952106695612805095074823010763389580819798047061109352883988025346944854874813903328509938284492735195228106661141600052581530081880400560096228828992470686846545212448338851529293536248773710763908708734917321583272270069359698315091985559384057713359315808986385878435129576867954788471702318335929270516148757421421763927621280608045707178268478300973190476402166556009231594743090024177766933545172278904649848548880554264985346245828541748381629960561480612259741871366362831859002759814701810757574571073939906065081621480888441262319788677641251624140878542122527361319726271692152177179975763219781320572949674913330875780857808456915530544550091017201263784773019002570989787013887466608615910015548447049080512093573751660063958659273306754476814796257381134043112984415855244100341900656491346370220212586658291980224373414543060743390650395937139789565880427409358527463434727751914910196931551871431327035938317740232177365197048676047128095377763336601049074212374430183411552404974265925557220677571727213355632683154628819529549201119135740220720906533375614283555299614289028641120407516182116739156637521429518524813532697836505176632013236932325047417839154359603668772858675160818200879188712823383318759743047249601182955949241575409900860904177047891336062199460344281471451296545943517581175064316643358214842672394113682953395715591637260963430383737473538596745218098907072433088179102231931032593420865424205917210753640656527828952727750087259728725946090378472486462364867923503214602864205718660804186332806563125504711281012585011767222781199841047103510300161123059582681229251017145146067586315972784174649215957416047548623553491206573951213133070869794908694627523942470071797121301670170111109000692702257940988677248998980639622779026040595309206447300158128990868927106037568951772800834592960047112415476295945973194255616636627744688655208613597820727252817660041816378225655126816633425828022984280490827781262045790904983001172018000042862749028434344708695494090554382068603413626014942517686258626302561522596717656315612413495106733089192497249623351220425410413631074508954829385653939208504044016814647010352555742465819038636101658399607391113262171287774021113110294620939416806734526981173943904998274212376048174569251720394212982997354642899767542626152036049221005291984080775507600756710406890041487370383949475131617241449503280102571063192387711304315696674556134818671953080126703753976558317330563754864513844265254041903949951999296773369800593385119736598793369155274638850681628194699431114405265250905908284259268284730241071586318096489233777793700195015457976910035252993723497708238415717418083960396539749984615035143892969892154698775660002620358485794304268844231552425399334523930520739152425108096658650120812671866298956166056861268421850116020391966292994217386891238868227924420812557066441592742379474624917159342829879912813617960860021783712044869502899683953828262598705580819824130570886794438168108773928742535336813442990859186668923572995305862017348545540084332293279489277743959968438712107469072091252188366770534267172184310553289747390609156356592497336353739905834456036496884503724517703686338410564038531227796772360291429393455814498184309750249895864808359781824683222466955299106271674060291138682283982689610119505865744796826971071972840839299100630671877881630920922187983344720495693887085061542513989445082682341860191408570427166226001244036670024970611117158184595771762062482861762568535124889210110830953363354988256062566077918146210920316925532860966631216880101766385734419213235553693118003277013979007804231911459441720469459706807380399306116674768836717638784866882896429346128869739854975482653924457685117891766104798491086304083111947362054025962528474675556077112034947315632003718854849846418583319056916898113863121890095210632975556155748354624604194802365680632147262371261146448276878103445692575957513126013900063684742640955277353401355855879690271422717219427650143057105947921292055248642363477298826624412158644787893060525916665928746365832645162017095418533535732086233457684627930080847294810302042907380553856452186304374854729179332017173307791794015184671912427107756845832187296958357219288784421357783000942703562481804894822814748554731700138613717115981422114827357846888091388457812846506607377216844170261567722045190002890404683456990700842852016393825044209283289419192009308507243807137748465037389051155103603356596303476797148815561841404866990804146991466392799230290630053585692304176428359869294593617668613371412640377304866386762847259355289828237126092583084327761690511355955957966887097454878285386943690538089901820319213363551057529865501898947163264355810990490762018919769551705024093026433493467174244379067771997863180276322662668290217689228344482831447527885634107951757943436443361317924882108799807426772654831665392923076260623243936904917093224166776552363402725388560230191965483951733491035672812677822686210934753492672912326099354881375642390399585848095427330083765949510520537018617181684886497161346573094865514756675871156004406330849735357399523683851248979656373524584205736588335196999127347113030483591523133770844897930859585261141792954982140049691302273298435048112696506459453767239066021917408345304597608651462949701881016134114841760808987028729935148168009892040562702161652643122951580333250777168179056120502239588690371332988761196202432939166026260195705678544799534072507945537245041149810750861916760701893566294992038674955012290198371378144397262869931917527140645121564038066664517514110551163430457389594927435870743315145481445770562424302647181781723407522052866714754073732884464091506453461655802502670210237800639374746137636980774385877827263813544003483249688521464861343239620163081754679383628242752026993357974776892702172107564175013763045081246898578962704379432469231971651257329870500814752708444886580115928868618176516079523300465055695493436390939291194851028251121477301015697919828770445101452994100286174155792349979775112454531927085712001373808173651751721217179752357376846332804198966423938610410721902214984258255281563477014953244167577506327838181028366348069104500278931277833702705342127248411178089574637196280258070443927541856153211108707482085933403595297011700566820944500396631497405375477286364346834231111042002680369774381063264081680910580973019012405740368582112118477985444803506970195352063163780407579025896714928838089870460948625819516403791120960443756303975385668586234495442693109840211345753312353347414854083947582850214617723561138014018002229402793092601124080530099376820957414214209581945696083388163407861806708356094616310518659237291824798689048269417364730628692113163532865273946727630842839380579708794705843213745963053698612667044520856274722010319908745767638629550308979897749678502379117683744485447542538586014278154581740346688413891352946763156336997153289227559926109653844243635892000048504698866778629355737197615831769050421932955644344861151148114256696873025395057228979668879129251695536450975764333610763705814333526600604013475538449107563306861679123695598484005927537704066219564259017125056687700142629972730158142330627278797789626213315994470767109963788975777630169912499675551994555964129860056143600892184371150609740756423090197307098072754217632759162366268977435079322605655084215937832960516731345619578316073364790692884232778935697309083495233616062617055607200984761752807001305513096930579820596350912871314815165311424610511069480268876338046349979332250029914471387499573469787663347217098488971594420797989749338837939845421336081997993912812664586984859478959829087093424187866115401833746397247581545745753194175555681535694369385481263671115085630992059966810422036630499729063408981849090680198500898204663914871333043401367562482601554480242034814708115045536711549451034477172157237811831583315152369736499767167113509658064836998710562536645792881499560324458884810862158211111235498804581883756161258613519710729889636131750058918570505812049313942137953044217275748227174370972414314419168864539053452808197853068848399424335186209547396802344810317670071107501796783311189953126726998125188789548372756778989292903683276127487689485224884148481761551305854237628930620144989883131171698940689958045888207764324420849664529124845110525203755798682101189872500197560759713495970461360542675254496757024071375302072228947614653036517006314600002383569538921388604779209836431766976109363254966106853886127977528047447869088101402112678375225546459754673031853974770274104770139711505908819165017540767010597854061844551459152684779254080407921771536367545620735573053645619588517413641229748487636481958399592192970370851450068122626705139759531805415684026395168125367707472269373695441283158718513596195186977102532003235343920223039480913541100835134702578278169769623965955243066872130602021260619908730688404474649304747383748352328721278196393279637664306160145550762290412720053714972802821494059971585526704908164157757394822685708267285894348152572795413271918695402620758402621672124106253285695973683424222924495230934999463497936918885894196773362455609636898918577119372090541829648731630582020983798007282471601868154219214444142832573607380998584921071713981722284208947700525544316830481882100817796094168277285562360386702327449250383128149606024662363802311328680578698576629375238384625885728552879819391133095195254412791327939445618129712155903892455848135676429583043719088994847175280337095549379840287266015163880481821340338318493187270968821774446387028852202130860054239457852726450480223254142389478142325568095356335158161668133743066502276314681058586353693794487885011274182191974076550864369328925295232148897963614331511030776231280685518775409163324287405394455573682370265464199647499939238471744831739390781045613769512693986223833561765374116249337306126149933897946702409049232919256612216759406986183962148207176204281047198591848603948048664097571895125669046506723039537452328010070332274515810376737720091102310746804184972742302059056168790669737958798149767539034206538784801774783114502908613435026857454790895656333989797492678754607199625120394461175873339466487637161382942929646243547704870991638233007834531174893928284352743337224225719856337102776476114704802597121703836872000064897203880769388855217912098124154988628383060019814670501913914546573062510427922991991083865817650567136941949351702055547801348943481554133638911868034167197836221735484639953128092881842313607987746664070517462719967459594188250084581694009621261128118406338275921415131686178146553002564777173081684499790510109113827351280094630372013208677220750868074486718671839163852681117133650629332342653928844340350704381460662187337949352621468312827595008184144445435431043213407145490898148565534426660037960831469772985175815819452899482238981364196978016751646538090233987340476360028877960273610024526234158233857401558580088187451396807810152588308243577538781166404048124557780845059292851911593671901327150197934756429464353061353292542004855823093690693644144663868473050620093156531208414688665285385863122500626897800497024051792710633535634644670926970398553835951913143286997524488841601839761875146094020824303287259757269773076561497059448559505084079241491258257811645704117709929652774742083424600877474904635153718067787685183573988489601022426096200837230800396944417874133423783761160662178099743634202873827359532415902775168931629759325808247085456721125988045594191560576395361005307709266365530297821122705712067564217107640119019058665171097327855752932131555624759291582969407370963752371540432328569830354965054415606665515162260270940243189266158360263178461141844995992052039690660917538743128698399861555010891951692724774220147613145283312180975764582677496619389225262487434641527713872986576332802874574830353837837177203953664545112961359988219541931412560082238980256003167372673678023414904530364383009782037490971610159278741316106050551442213049940899089879986557105076909606038524795263349990129978463225562902218251056588034968480531512211269373615978093902032969656737870598114818938824475926152366668643911673166390163904675290466297017114855771445812606355385337886107718798222218285099747951419831267329341178473657131223472335445971354998318398995751092790590106276278815278092705330337688839959197905470911400783131184307891004489990284639126630792810701478993077271256285508280522364034927722796520785239535155781109585097717145519467663876045876078811654489936020492028387253253484297908916067369936103262305638624482258080314183644547260058655925089781336959175470107966653831808244553674796077209613314481139174006721078070478602049583482867635572595529265156252253991224458270436083127402676832978901648267954212112251490439923831578354894872752884080875041137461650461247804348218819857572851117141337642776731599473641430537593250420909510072234594542900706502549822771036985251730010670104171186920683320107391636165628611810751126382449378037327138107059507724938324651277193198752659010728864436171905854154150688605772834805983165206069863425293699335848798450453626407565771385862033696674501469448867491997604856814883408578257532733499577212146799526391451599684201508540626986765789784308036359949357768957166307796706806861538500555451625768655414837319659623205208129908996076064758662829861747008380074371913840011940338692022854252102899658480552692791162976696386178178229311893394377334328082972534157163949001211402003574321392683818818096813779973780049319656669529988450679356739638646248777952713934074802859776932470105982047572276047301048737863978049121893370585852095533095025926626244369427796078175460585398416113278385123279067374729619915112767299997649182799459626776598623632576496772867279700800235597640923468616194780016512543025606873179219591516098114985425066648373229271434716930627193435948250409469376749561967867673978106492511377512220408470785218297612037193866878667061359348448534794579551639871895799128165562512738402257028894245195556755316109056796210368911974322174934895219506519547099567398898963067709021618984987976864620504895922577063950037717358386858633231340093102432157451868317528137986839077928986706248763201924447041258061232323435078828795299865190272194183247172824259223033211071275724866092774175461824287711610110850457679230450398067960734051239038537989815098963519243210914415667232300027137289820286911433306854242163656480400799656898676493696381045935708322762006855867588121700769141990389051198890150934713185486154413206656843672489062513925778852524253252035282222932136587438129425305735466973159538346697184181905163198699885345055106919346129451903618749537279297399442582323357537579330865512924937242753060589692025199082215220185278864266272951873747603493840617808080000773172230581440277885505724882803129023159548991086226663735796462751742647755836408073223554078613841297019899831001592073537193582647360668960839561234018695353783135180683825993468822932838897088561430671449507904009213019954414420938286583788924872537272000770884097991581818242915830439897871142064577297136453111654094086643356884381482133845709991045045122231444929859589718868298661263266601650931307391074152065668150379139934458153843879930416022985561367227779847191189814794677707389381704519233563120527381502220018310953033337912783348888723242413494464432959696282422474267479084341504320999610987506637972412325122119540061653577603662400219836107166563063484428747550780393317610951538899896393181827488958356414763741197040808770646536660096073307546366463052014661135551415881483082995290920228943074648563371542882104540274136187754483402534015912185219795948767325703292020031266819532700204444351187153729573985075922951337470919892215289391311478839145392018861221520678248432732861465331411767036192283078749294632578140590701393237172276419543469211177431363433059942025557133095646028772774577136802820903162158144206742394143663720503491577560891479190545682099926507048400163851252776429647567278924460116182015208361025580973969500781557281443897596152710789695482014336101409421668158393642348884691397732363372810289316302548482365478417729261889730649373515839029963293155747499330216033260934561112975417496107613224966611937354320214099728787859584854502521355855813902726335112721051945924319678669624560567944992632296905246336340949541383137264924844139620272412329257367662207145519906254489709974774772959946761326423859873245336246353584147755869235325928007507948807689273487431576327005379211939031034655580949515871124328028603889988392036579494835736352738732886493190553685876351583902334949684853351468776381474933089951657234817979263831102396142337214782904581580852172856702545185928630969277756182783147265915432739473933948921947870543706675304405202377750640394918143259676776258309957811267479065363676863608847720875367806373120392305755204551099413654927098313394407267626244827336471094376185087238623243957874807101895788068137413009633205417369117756028446763807321853308455571444942679822532000331983097656082443045452096417453344502912357983981693826475120660727923809554262368792022880780102879621872477596500710968837079447349841831709208493685588579906722829208486207949151282429005392407164961323134216841933448431861457880132413401747107428565738985782384882670335153077116956106925075533719076981053429718109401015908568070424195491186279198062172748091349477507993764346870177655009996611103944841329445767222798566642464177151328026285108609760116476106208076484206306079903745910218315437057511573851403024864006976247582241264833066462608155766567195458814230953701724027973435231615302047330856171812415657735239539041303345189088218257631190829104545908530698472969427930459186330762002427920930311904522780870738277193646869825937230550678401978607142454939054630112152727399107622399344700631353453446845292931728080675527873760622592248319579298297338042620220771769040326948463841877939535371603400116965307194789289070923662689456947755445516331997237231614122349959733641591720964646384527517702211825209870956664012529639108291497658562684856439073180932026304101474677067646575606427191039911480257239097827710668157021682940307514134143788820003255555372806976441185402003677003058305821970075779750832349514024058098287913686141847672022632835421857063892446496162865913557846794719938298988212419406611830075247540513156218184394896135993050296499783188359181025424172373810788789979441234982743029306917890417779339536669623810697711689448811915281526965592777603371796317888290720786907242496364619335439294847451763550020661839055087978379867093673018060967366834315400099846617550867737171080000258258846477139731039838899307379646828406774364546362581230896458116752101276581071532002636312037261444172585382399985319699086749067667307467711789130069356533121372634392850034770711873269059534583697003088594438692062277847339287439894061398402669919300681179320668804013463136812917381955844607257670425564807337043722553691086048826792686551095786309862816290647602593110125559784602283504795709232170206164142223353037669358887971511392472105805936822217369510051145412303056579994073615451230199761652454334862875179809522760552890202808373261584357425025568911304505283528709213333231364840708920690659651613215975703131095501922766092738395677892927711773030416687570705843871507102097683516012118434202143942087638696570251110680627880089795142452461231703714914939490402429253295179149294598361654473055096836056259906516682523839850110247123520494182604683753305200448981953043031639731209932494868205873369913626663177356826498017959683269425244763161752044390750745114388432214170535438423901065974469744985732121572134589933005096654517585110196768198894957960279946234097599997854247589151637177951512695113652289707033046669394165573132493582784094384578688036471183690691817992455161988361423918028250259855032025904729011966772148592062573538144124146003246473366155132573745658599860610620073211667434476638641857423446362812266681268429267141881728564646228899651399443845013977896162489876101313105215305822023904506448529833608133302804077093605916019491804297810743582096305984100523646132773999424086036084008821673222134144037849496190228186906149871368161299032421145353682044181164249724646424457932226488934913683349873937532966206700624876430187149641995798957784214760515734938259336643500329709837905833999812286603577303314228004599445866369612079328486690744945176665784161766644763823900751435511370127570033044041150993340240012000720140396189323501389400364783584360162743372510464778366550433710675226520850001293242164573379424858506507772592011595839149207493859089936437699259491361277990681129217871905652019001062098151064494571918351811000985613863838534744038990950234523929885083059944998820567779686456003934758247682754570737577601103026588617914443395000473556229975024232783641921044551091470516225746775502333348058347439334280690193908578294713355475329486212189097681007396530864169685086395214350649518772929081963067691210742324245433481271741591672907268108762592318741305904806943598262455197183249464979687978390686146635983141278894407554358721098788592581140782737753365317597112492427051439898705718415769047299251570832687919375988296191814661277149361125379457918694940125800136775785297256378501800769335339171460283895384736215965436315562743965168532275696682655244325331427706538917471923658298057009372596351205058046947420188507481975580087110939416488339794610780029863242771931710519812939385111844484309053957381887595828546075499601708003627871602322883840385193553779644641494609438787217499020278505799561312033806477655244819848040246757662638639024866121929473383257647374681148804975102232606725644071764338990587239249289551572646951832712913296179842147859813572800764770187831494560128865983703913798321733704883235647438570234200630242918964026706767063896265409227783190243365779160924072716497371191869038074699847341469463839336875963109968184864409284064225294895344920087355840791584847090099760516977998101742746327432568157691857019593945283701577300306171010474283760578765129512372132695706713528256441056389058457027080309036686395121295412907873841430951572071743532523079847246685717201108387338072582455426668782213829038299917817180749515287257735208776716479922431622841795031599238810084225057932644024295370930245250549326926101910903531924065368946801120649939080148676562617589999862559636787990847267663683364884326080537417485627212093321060566254067409628153128458136555488217288637275487913554925140387125129014008518382147631365642361542478993088836275302314457123947298700508068257865039343351676706729327891026683055532560296351368573392677038886380797852596167951852993251943508194895051136342919835145234211707090542985980679072084181634332397680845870528724732705268390718590659238308440515065919561760682768357413222503443885597292238226810843421898580970206016911320582285993337722915854623328950057914310690470313455642636929239080584055551671505006494954432016870930678591276380868216630932645175869422805434513552468878680893243609982080084097850436176862198467250656937159396290895706655879356877898861057327886665774072340187307921845316377917820798774754089178582704083835850032177316862964617031072079023129871869255752351803908047399188399457494033984328240111985277405873997851864285901659871428436438837195596633056745626358705246177794651154537810867951707635591039943258684346489512501965189781700784215685093733175375573928679556008991705919802859446816852707112081706084493880024291957179505397826368965686456051279894813418488469994099894160650680235536221014434545419610422642483675415548462359793330868636625566951054047335650384189078899478285573603814941367141871207645669933271191634667100706688526870070644310169320307306151946370880608833985434221940182991589983776504367559674086869081886488846979798896094795491143146813366273555484972720064049167499603149720753841229207074827248033148924941099026247157618281614316182883038204920079549683238878109817876735867334369119322031128564273976954311769757395075083830566590021378204288653567737776496238847629660395082599432780186688684586442636967570574229377287627701961264734650030104962330236907465384469907806480637349089387130989236436747874328348212592517778088554359244711838482868824514722161789963181657291241768614012778737669907148386455162005769341043587663624771038358114132096491399149130189333795640042011239396197258144529914593632252815332533835471050628623128091411409565214884632389410467873468147477316576253204530584954287776910054993596414184098994068708795087660830369579976665454190377486920352568567592983719151903051051877429049564081196886041629489622415119781766828763804830908057435539780256667515289318095016447376535607361689898728750042065069145198381583658365264375210981534269931275707327932401459012624690068052586168872836444513605278995644752046765235149681001991850081334210737482439165989181643707510326190412496151921031541441904925215692764563308953911442571423939560953843647451096266651035837810665734980632063137427472579829002854283411924120327503787788859149507167145360946315664998250673194418398522296354480869352925066279753551950451665109559036879598186482665240805775658813112796121883526251064346460708649980238483107990713053551006773439090106362605369353165607170946910086814113403253225410762645416630381951794177656406194253706485827592035906927131425030876517770951090881712708406389476055702277621126973470975455375849385642604148673427408610487466995415528705101405571031523173839021417332093282669473336452853426634497826764974437846385212950554012075236451335713724508090203345083240376763172297760778372801446204320667151210246463914519166126543747003512754999903096143761362513540468598395793077591610828055516765241595150840902120946362557422360233523732988329618538408311521470908631346240459450629355861424418610652758018339271519151625269744129630891664019605925745330058107417032605640045507891180782205723658086681510236378522214236354374615511353314380560773179569975994621558611986047267083710242888236806104301546713066815672416488570610058256480281978940396413418802934422992561074198300328190434679724892991755776698202938787846719301770369400036702931418004248475415723104725880162820880074923048091231858196955592146832080156484458785016284919875943341948342456683106478157194473803182683185932461830280516493197275619106795899063981689446439507734225881791426671925617892465453539932347195079801100455077360463141580678794317975446225454691337057379551678460256433043187500213220092587507631484929011298010268777277606189519075044596595450120927512319743773935503623355237624583363585828595406524225657319372011442246512247482381880256715534921454815197812202345116940239244283543575250742462205742891113987844593385419597185771930460494950003720784826703032997455971001720335755505504049601926373519910226583020399730433990100955834821218220203476276257454447349352721158756557039228827579268969637849136938299685311462300764550258528987167400438759633293709064680879166468043320921901683435672189382279166385203741889400575102211793422162779064977159895595365508391372782594560975228432253447676923065552102581012519114602472505227705006979040151463423990446133574205774944987761877603148428305654547088548013328877843262993865529502273330388656413637696132567746143765207577131702978145330439695679746936842939953735894586525288343707774572187401045918238147142303286883500847600537803091434861936498542138179633468949829903740149823541670864799739333824797386818106236754276331491173012949678988250250549940674743647022832973517574117814666248212793955266852519328289017472485849625591844780498116973139320729793235687165614039355818962491344707339528815529528706492072653809765098948365751178607418936397772514485015897643510293399990403981379028989250181775052928877743205871734840002217119084422052014217384408442935688984317704372616507385887680050461765247241007020344624483284119104975978282285746148094880122820594625336015281808338158209900677495792609126455255882129658534741765011417455876526803981864677984413058561993405228805546522896860840810611858846817303871406535828997786762756855710693362115006193713577465194357743248869726252841364090972462332320488521269358361320796529028647557596636572169069202292483975995180898889780497730608899075541545317790346608439425271410994346512498150321388351458429074668801802888292042851497922991691638147313778238238405305926454705598960656787673464865090167309962979203387555422002941766995619198916645732959606521211658950758956308667354273130824461985278882609230597948738254581742299698720754836959940880721125434777053001778885497871618415276833375310990088401163540484871526191580458036124864956240372890889191647841450932299025156594776611802932219207023618424269494609902261455726228527314290197371305486121898408183226875766729432556257808215839652317123999071109726707455548412915877240197356837670262353420705329395424546100668680986166467494630695127092351315000928290360052123484575328260135247920897388598162802153467806219235116918728878367471638024530846262486912249645237305275760177804870646951513791875249522623748859984466211639600882139874201095168303813198859120749699623838569336644455614563846657080334459792734935967415913836822608464968110550134150205129125257475465809232720297318977868047946205477148475682630344864339580921578442404533515566152517190558525639766083838079299045174254356653890101357626304243141800841265611810935531411277901050533313546032082418113540932955910405021490015140800647072200499853954807906776512821324309866796364447951923490981247433429307607852255140944351314667663480878509445413167348097582015348221692733097158694098823363818301500108675198708831501247760840595270085049597741581179815277796857783377840022987300774604152633327856925084178116919485772168160010260352386686031110174554275162804805424482094171581894226564211751297226404734786056217430597194696470516924174818012844338607650402032522745391390007712204114127003543441876620920063169825327002830618916565714000493528189147738069623154508265488579104932730330584476239760993183918556040894676231545964877950067528051892168697052495867343013673239192663590548381195419624236007036017610650883345197147975761648975066203584962215721166211667265156841883550735048470456677519405430679057220144681871305332074153292433004024467639052795213753553248445186544978297974506132640179623286350951674460615958026421892725077396805493032578174157118191400880418953124582188955751128807397936247976715570664405979028729590364418365919899154131954500731567804186360074489479104165777457676618313415418644377881399357817085039314338457491029448246155061361321856293052978793349277664626790443762828617663715082351916434745021504835554661280696613694060316501181316476750987264924045082014540999312231740705701858389819043091422438349878364598010834337179277152722569445441210332305960703379535251296010702408418055107754132229017997963177976257534504674170711783941043374872887285950448380618168300092628532229094078045587506180852168360911885150023709555454680030413936319185275632157844095614289144256645566191907642400090974010538070647301982313658486538968909392123689583919830793747140199241618439160204884431978237099846367718749483687037826093085903375112307740802554351552860433307143636537338172475538906709427686360309024616817602468169523803221614415061213085740729519588791955165877877138855141075045515039353513943805860611080226464199102800419974335839111097082078717194518913617985204628479587156936033565798300612422807385908710356860362388797173333792321045990257690716267115065451412600244374041137993826310625284318449621866518721431926890154814388002851501812503412918531601027023613199753908710854785331107930676813761736839136455771009756400140669862893861947193469397070452275206908872536557299164725834445979640740798049382301217499160439329441102537276403964051123625500825339855518627774784574661998777149952047121891814188534227754094204474700336506871081940023236000917799397984959417017206509435434597232925658131247513465569901999998262628151656027879202708817417516198986628175709542366441596039044586613680067699035098678356514024309626858293923575382562390328039384007880707767708637898249088381962999757694142178034749401751481954066353741721243045800083191988390168101165101401773820086115809147639345484363640983750898251107297334035932552848897320912489122099751570315078530993610941147307379167349535598643250624418720013659182409103591792331011715889309265934709764227053120650945873361791407130512170771869799434132460237154821820731593805656226843794079391392389328954261558423577715776275583866289954426845649365324506815466795990815939453369687697046410659948467450112766865526469880423643399011673961054066302026070431077559698774942430333475842889741662629324558455428355891024076154425702962754031854309679774555818692706448636583460653198220542670236281614807496290969540384374493437589535031998385277078215542091271101445635984955077590510913516604082830324861149731220758093081713480107986908861045219932170545160237256868276331069616258685166741220799252913695553703179571151232732712435987912399076598697981763873758549970095487232373232038551331006468834010737291195283868109367885206668392177440443048663140525456073398897118533058863747070315531455861575334999009850278438090385867144558479562636877005620926429868739726625054688364430732400245081557344133840128895878184410089173653044075247512350790734584145229611322697347648191778666509268170321704573704633220236492991315225427120259658684366822486236459748432136282016369213881398569504819458331501598557013102584778970285830275179928344350519748563121721031797139404510769405498284009993262895866754374051358982145826975552073990671362929136085291567787909781865199874223370539718981119174965855695612075994223336571090263572852693453699138809749679988513266921025232234160800986601484013163235442680198517549425575735368589963662843468396542748512857686839414602266531014764601541674120193489264274118216141531887681806965576841938864057191878785993468173107234794767804096467818678634831836642895629840307928403737322106668122536047093120699491021856251850090566146467000627323080672810956164475618992953682219246612953362723766050949276679329483639323885137634646937230592437421047899927297914992759523664581174157527244406810838779884835911695348116693444722895352537794211436488437075854689780435668159794689178203917738512196236479337859629825373588594140137443384432049946692219638172726480104715131729675293753048391900864306971117544165019864968519503906708114668950400436662055816040356051349115194695335151460349603978506353006154893489514472019144850584424964240374901834350060829362138577021749820700235031841432901394401225012590623589173444238770025323606220237380129350125265474378825886297208134313203173221363218907081914068463777998798314244807515391743152287457373640375728180112723738731254820525102778033946657043913654175110315675419038648349196986362407066374042860293977990741951898308379020336816889080217724006611663432234882080230605376259448569826443636801466983297032849611232764961874872950472040030368707347741483897620004515020451767379833913751200609720003613453118419068020687889720785072675351358930653618345460335833449573394924039336636334948204936853435373166705609569902927139719288192224579527058951002052618729937515381485959709339410557521074890682927233655197127438554293995355959231032611393108159925325948588772267066905556472263206924318764747516417637250816191543961549764188166201235555496955391499532515094841534999584046421071199367727484134770280339744927518282765741267241269429583891487517905680483974962771599943220739094840488179923221012686173460878687783858725643662053765377102143104283635458461305479341415444656168455163020456347940339469856786131977551263313250518637817372062191780723949214134312160899754712709962939722102325429754395706282914488832571352609811766352652589883116366125143189025373645818948127566667452148600856383143367261711602886681434110738904370005232941330646491671464400236598701841353988956151472876080770021441621367454299200973282316891861980006498074219769157505410865689846015319374866166621781889545429014382888464372048142371879087110686451635388109118254811607560303639113106820736489664203145355343501849223496350835975948555523199188459455914333635172896206643423775382113889377236040205728951361135007152915978279833284272471868880067444019674549468960647965458986842418877594708654510713905269674516841149030896612782325773482456256016372756792733281327134681312342123228985059447488308673073764109607717902697386589515800782854685574700442028067647383818649455304830278799486083963518333842981241246437513336284722877618719424346825721739369265019230573974216688160817656918714181288179648080365229843084812808428031155754356460198108459480885898400970946103866773395826686868650286693390898510095391040685541838995729820094403731864107707217739967593564472584776409497312534820468182794182481776450276122696259060316186991855701169831737223939207298751562817059724964459767167129412013362247632179036808507117351398072418712224271220200154986125782117056680254672935193732073460100230772315768729869970892046514706688506333059573660138744933841715293581830955019278657185168424015399502413441651855315326747359334760692895604442018561760358846058734319464128804020424283361442037117411572727693628759800883788871696253976886748558846014163051999468587107802491564589327841350828560063760614289930253908315702489478542622610387720009150789320136476857569644497870858030825311642431307110139314426681791217757517199570304691025551026634946579522774911724487250534099407030755814972132774554377385116116026618412874300913940908824264363291974714522802350587480951980994596656572492390771347400715135402433333592758957440283468578958414647679533982415228404324215581804953070826607561820514326843105389011295865841521154034941376435921553011425207740911566878548335661344677304991813886622335642289033579215770536497492814797929473807797323188148616014800350021824503154779751443584979520334062902743342284612221548443801309979515196558310270577020548084882668146863012200437807965520278080192593427573388898450628262387093541076434976106205044718062381723883225764287209350779382590801994886440047134852965282859334778817567944950546854326982777239299032495829350951465721936948756835899794320570805280612512384515394283488153396633308440581783040296714819149844832269783447905898338240980865821469680028738930129011768617726604266265296071430600128714287560135610181730138606900929469966252602434414894879927105523346532707114519742104828957840978312555514551817565234573072605295933437491351908038082437484467555792271656757138265310561403194989680955300659010671691953634754855593032038823040770661550506194627465423102673461703572026828788451867200716617282277387250709106386193589914460331453237958584964748302463346228540218888669155840983977812280075172511817765952942050569051030707513503930701266193119155065243238833396033789582265990754516549360238897779749415181834303236172408430162180222775924694675506654847370571286332030233052190221487912355241423135617218819261153168004064999502889447639275029072799019085194819851092731806000449503799166314853232185480223017915599295846906350152836099434696241229150618496130058193881129811273679774200649235259261799091437317316419595241766604928249563771715246500003279977591023166308443415266756074511596571301105788292719438711987778943186357704858548457175118183044804706635141408345128713057670523868619048578471783986642612504369109492698853042824805710952316681902748746405917099082746234395270468543191180713400914508174900880929471413137935639444114957199189005725270102176323340282663041248251302413263089539198765520417859092945328428663949401062353506587730058247237027569694635856323348645676392939644280271609711185392613632291838259148272421343873715292416419769419392845266614110638582141207937427935809828086392844117668843553240025885264021221703186382651835078667845618732306605330066279449680829485860843623189221684830341049862775231707045202505267147551865779669984205357277756057629918497470706962265116368885282215816526921500824252769641284836089522175783341228901484589376078056717044064358766643067591720246373749666836603756024375445716982520598955326875171239945736369663886672106098412799988641001677206017145160117401478249075271363709634388860359177842972246281245269084387656465213871388795331451499153623436577867652645606057289838490189764571454420501022711318571052481765040620070546222362496763395980583608908549798808822394234748595452213044149899801568128328558687331883393199348278587416170927044900807835001988638105303361841996825327847756017403172368512071080960093299879026059142841797955496108518757938747849195425057878406479654327944189436493984922769877593985977862115106176151139376115954295253812295780298374385830843036299115777416307365289223100658212602043111899689749738080454350950829307571830693026649372626949436077968251092435546104408011251598152194437753966345074369479262316425939267037220694460188096747066957874156195515665135093729864909084316613164150713292780715471307060862698372901685584840771545168538282813223762024550167413593812116025709307644209449504692955917153276711981525336478281292021423379126561845384307446780733996130174869653781116962470352199390434615083031828450000142977242301926912543627305217609106263894351104578316557546000383553591827537607068977426697081472375983665736682131992223486105211393127422482459069238267776759134376965862794143671937233132029686206107685737484191826810163885755113167980475492290310743166443420858866194794246235348175259880781600505656240463759279442693816565551294217831426654740162611130495358192490358252695309128276243999278741218158302224456815885236604519862171194420691934175301978497431857816307325491734146184229330113333108265081254318330580382463472946394627216741309359861652378489842404004092113073998247595724610808340470313681175617560874559311394989415275789153444572481811059933657767944810132766261798069653050419413094952381896252993534748093240591141396649678019135579237898995740931430497229058624035725429269380026548287995229376030657566247390278415177527690798186235792128438678404834673521171368686730818589349779864082069793685366688109399602751659670319455255098196427259440530269749815902660792256754501775700645410130808046503028030986482540249056464297937825134772938867864970617595095004036996965339684627949594879657506562314895078213628452725257742403458228980552017413714542535929901060728158375960033921742671157218725492403231894778616025009983232654769706771503661059422444075727176635835237554161266559851740626744525060336866198542092496901254039346477406805714797857405245938566392179096035508483397555370820766075361100099171148605038245759135761015868549955147295724921034961804296854231959072047817836041227830940802828203248329997318759927044967273899608663200420574796059706881877247240714275054004077782035702108656823418722140457799628489243361403431650448397505021459745583753041511549026287451226676305905050791720588533498479353270975253665426700900925081694731113616170007172739215407325389684074377082688044511154470005650634769774077000375782307914233249300885980682373758153569131150978439290818511870236743664964366691179335447688462825871911723894347450624816023649235431280882347553462383575546149197002875232778323857139365178100973570756663353787731822023176394216217872518637744673255296467463251215855290291206582316245667890969149201158670057627532422371143913596255638462358447612206138284472068876881882715454200988515359654152633914458038205428883681891557681342225292745149146910419761800082474823599000007437278491200166182216375803896035897587749755460188296387185553017675915346752073001246394752720195679361202067042523466980877878236705499923860564117810590807651061184960350994776092365604044529805676200288135760418353523350145719569222191380079219609996949825809718838245040409940171830280795269606908759270372124991031247186052415983579040877715038813064245434027022640202354648076829743671696294335081902791304072596394069396297075648553548416024198156941819200427130384924371343944253254488561861432971172520999877791837725734475204180306871335238574234189700856118736388422102361266143933405453897416099422438773527400812937927726796090693243757216090348276226364201333124465041246401412274502792065698758490002082657626680718841019151591288619088833879716883090611269344323419047027880389892313897067953572647049405482657762163157267452076336340031647782922024581269955648559365166541278905896685244390524068269559843731496345370693005946578093004677693093298842768158273084663150927818525712517168843159885996147941059571471602113937528607697595840261221826327436690858193680350007989166140762332407761966952102300900136818439972227458677388608798243926134112302200126660834207632646337799675656900007624980812859804496267637285820891587984754691726155357826552165846697545493701686184276499434681524667976454640383323330940053082127331710832043056226485449611888348386526281405303681693260466723867743688754826325467878515961536573867345230336103702850434915091058909718699080467556100881557161933895794390750835131767086335094070336975856340067102025235305250907161630554888062188085173106702036256331885943050785970543620106111487023125867604302802832108690852297538220372368965395947991399460925881081211103270183883003552044672066036657996482077681962455494548038325830935283488386546770950302360745805839393227896016919745742520691756798531009859610840280488234063632879936852802167877739384835070934777807018904773432045606498709642816016089277202586534376844286138846412334654771404738321474003058811823789586572146272097763852792178389749871680889824795434340755230901153826060018409541755487136578038839043392143241648724943971611421715604315395654916038129181271162860834934172806715772260250112073739742361480834028374348991520118832757722514970938950741995282792122359154060263807317953794409526005583619298552212052556548730149856687619976834917683424656541314973022077273972900773536280934169371571620470224044172458396183752269940745726246467127184976850697476419615622010810253103816326099642781834916389334906827541500189861348677572924793613139389847217245033868491053329886847757660068692365162952025480299721435980452869072895437350480290135960202442346743510885744908718316917153606883487797968623313100882925007165552740081088662281484284678365263144389735676322483808905885131214429362986306937933245014173981056699481037741961307755665960238777191399612253954407807388296014090798616235128860861768018261550907915318167391381597558390631636425975690105345381992064006788469459981955746226211476989781153839777614294597033223029831446823799659298719731732865028626333043666291545074042057564364506427853448409361498398168802825587002822546493892915826247683004144394117685415230554027983177465409735615138858256581714321854035188247224879075457799183629729793122393535769051409413605809424938509764421133403081692040596932675373875586084738101905059975494985926053983721518311760926920698914029342890423842402521231400785496801422718925913060800325430251647181594942416820824130065893004008202996990851405262543162199532200426030189980468903254195863037539482418100564177998832807585872165122145158686986190382274349520770366774780145897912515848973074038692915607553911802397116901183516459277996101391824875741935448239699593027422551354057454481258605689062885711290537164286842615078833419914287172460275972352352909027945173548151824462601643378206375210156896791021238624137866029101091699818790867004500836568789558147140945118970212216252823329006054526765719684214030762312124033018799971608102213726145247275439383144197673866940257625656455638097253418813499547298985516561004036473280436008440186203745535852299069797033491309966031333310115469026036455664553251131926500932077593785368462909333700547305714305114706943494845384371030151558151884491471366940605065621182891576733703987959589898226601226525747706850206585313610323811415371794178452675233400222996992333600112106407598091799497039987453607195425477379467534156534431144091337054150837310817299034812751255002295360665250649467774642271408408913637702828668878609455136224615221759383710034937224256476050016641717286944967930039479997404785017696933553507469678614438946184365060984574703602883982179506012055986597513349781691780697996617617587111964773666967774197880877367776259589997052115448777262186254014381176639868251331065950241335370564799035151656118699617044638015789432695800846152974977674692936736197594884527818361894002863357339000832844212233746517387162129116999474798467625981324247639462901035838554511581556242723110458484869661548870954532949811680389925032127044581231966438828909738116229963422695257314753091319214946866161359854079896450037709082704368793805178443018551647221978359507382493995181555493687980559402711797916001521221087185349356960933171772394112518713427130329879923637401498408786809167921093001966976258521222950035060627382621521873007840974288151551878010647518993055147877189029310118913581853296725428940941532997900765575052384107684255254375263785188737029931193271334474616710078452086422265562734142550184753374673138525993922762968823567373822480234567409094357758110220948666394981129026921482309821557203004730522375673059402069794527952479760556332065242440235178449377984823411511300936096330191200658170348676028936503448391248274853577923772670520863248278101996557920555658171289282882012524323445506144598848299182571309720176857259228243489625494382853688029269683562548558849233245792143112415345232438742563259633982981466185568348235684470375494184154060512253672794554054804302449031987081221610856611388814580014253674679824511353824991847515441766483196602651337147363977016653576050060234801293014743663151638159179360987024347070696754653882819351635076976941085585173846683424416519536189826133315468058250049374133320357664084158347102763463131167522508283935750957806018064692388585652111840904243745784555943993307487753424439330586684017045460868845825365008315131064315705715699197265793966562531686351299522476155168948310378283425408629257981709125608120438925213802526643415921378050196597291273255408785242781203077808037449997823120523352121856543723885420153460791829302040377084730677480731453314568416861115198241239560315739727867626940304347011211527516361440390300980084168920981791455995884022804253422355774997294771698302628610525515793387019751992522176759566189407387618413340420317158109912587468100665005962651852510203116563173537939556505963530319668822113411718212744460607611932748995625335279476803137640686421994473428029612152676883946701050002981821971699027892383379069507939768986461610883283790615428088915554417266303958704159294024698203161428492232851479349099805455008049860774285574871451962644984553422771982794274116884709303837491655336796574033768183291886346123642015591804266780405393305789282953237047982694999496953733933196804660345363623913919900353747562084035983571600769464866163806767588989382530914987421530681953768723418538447972378776202066020280636135695062910456669403360372556631438937144012942362700105890524021288155910600075047892686621564187176800283516082231776845980825688032087645882638082193512160662184626813229770803743194486440855215205386406322647120926638854631608876500194068405663435765965814471278487296692046658361749547073503494045460351031050361064824619972142593162617938465609633325528094486303292703545575041622156279979054579711956351754588181465187503830474892357730061872835352206661379317886532470796228690905241152419052144803278412769733731584478635078709045230015098793421988042947932300383183152489237889789577898627719734782915325844978321318878089010212923221334410243243905026286396946676376215011210108838744266915149908876072985685796525750624521924756195864835808693928475204749293785656329687601837741331666895879036964059585676276398297816522825556129505505612313331461524126747923361279049138313926478263163839006705841553902002730155802503505540479464007424492236789759504960167069436923585858289824559885336360552732328858252034025520371219121987395481687121453247677850895239946949637309367256993643096914189063422453918798484601280940456946712960537901475443482137730211571102508995021646291916941771381362062273580528328768373988847086042174070910464710273983421669891052612938201999350005060125779458346911290461201265529209815265827680206165600485724825680026429398820340424682231319172951314717584627043006909055447077283071835040408265836634457797962634988140196878943065886474741945939831453363733031795642862831097736490196442507535834614102257742967361714214091000068967351217931569245620700297857197472296660449177061026227667657209319504734983418547630354870369134015313843235871434110730950625334644652541115002202516241429917903814322342844517616622480164348629047759010453717441207074231912556097314602709384215644797889173157733648071755842731308713453025281530422365532288638575241046646525274776305914255004761306590061982222456727526465714798019993092567993859522210768259267141687029224588305715393729016624282744825244525155138563454714094770784416737850234586267120353124233585012336790869922089517075296494549006803423768413124981577809537192424795798279238980293214811497551081714983788699215388636309524423974035114493584051794141121941976803511527286932472161328966628717968031100246467982572397287030271538671613542461801098221551685694439482371669217093623997386320895933531124140355152666136976220549203231737564443523900010525717368670091347958751846466531946294092513034281886352836124999347859243680148170434316053851071948351675495541421052823703426514819528129434561537115266861312946428447817836793429896307966623856765210622743177098481021247444848018052069230012640069149503828546368972734668465406899226295576555652081613544808607342049609465934259045780521413191049742455389007916693609808788429543557121443015553604901716270797335187167885824310439030964227561075599962045723785260216060978494824194310241907550185800997965779620601225617433020459215163684479987937701489466120867080863418691227152616848528289118826079690171468360474508100387271016565670076072680473617108263411617209688196863018562748684721863834804228752712952525945788946667766745831183766260174226752236004755118825342701220999078194583104924398045456408878428800331263615648224711639525707311159512341935910977676327589716283876400090839243537643380798165475183942774853935927980537911368063762699470487852245503690294851453960110545409892220149447939439920945744488966183895894412720560414660849719647149623752240367567244695458354478395559967969537967840396846476909227741260202085761023462349668157641820437979133469646569070491037727491821248710565697932547164792658616711517551361170281323249643005882318779159604562229893772698451033324465290160832664268271355031307615531440145066779492283886295531730887922526285162890050420997044417943167268147625890325695838249555185137387932154016700147485055774786206194089059728383790761193272886239997782516675994512520296010882375882657962948253853151250848706063029221973348472765294492969281808138333007801488546820678744872988033970855078075663699514234544447267815665710796178449268513271922968677757360729000143048978133685897385572531676900007825299574231237701562766817042815297726157046571885316585004667027402691647044418341651077710798174063551829118582903239065066790839831863889374296840504879175504831741373747149482662899653687595084735664759147464981924333708438707388886949302601630339008593988545982174055501070830175319748658961500875810285087638026936537252893003730769222333903390796950130818348137047910189076279217291717830624976913555454876627267720003253635997725695407191780329098777970674990842089501796107414853962869014935833650592174771025650294207227298208036167211042953031403433151040429082502364413954821934338565564424706157570704603453862579565626303202281950991829004778717775651738141458416484320271733897370210005330868990818882474485635826877093122913831615129239542265990030530061837734815481461314545166590095615362138052035532661640196363907022702559526493574020126177284937146749614725522922496219217172169968877330395583246717846487154693431508188701938105823809385796934801182915985188119369389115380027893120805139098095033835473008044330037503996711418102603971757886258677231234903558791365351460039225875635380277355129159291971007420238900875195240857983711424506804173361027924551972455023991902182629096112456228023931692903226962957526737826746339961072694439494923163559621475546582172823387711206826729005085271427125036033218599005894044776370792615487155134513927136291518884992996871672274372157891744641866298076352083564986518570326570705000753143521734933303268702316217997033317233549724225633459527169920484935446588071776634498307588631266483299559448871300508866270250716363958383621370681821268061833479208081851677188336047988715789206770808194866340211697627930908682595289236310912256765082838109042771552849846016924965724921888148249335140797151207831394788148610086983315411573656013022963614729305357362303784410427356442277822383222647816578113648957299943991122028729339051488200782853921816385767432903050273552137815952521617015843225658748308880795088362115183983973827124796171207449131762558965034933618342098404080397430324512241076796117351172633188553845334932537669935577446165162639894860209213680531374820463044235285995244430980362031678856135629079717878183279756996829389387122449609468074278779803949892874512261581895048926965398219435796250056225833102242612613680489128342677840195931653366004941027121648891820627029023809465372184179843358994924969610931415173246974016211656299833858185235699542476885197426813498154464689696191030135904622802493728597730818449915849815299520315319590069636609491860391006932477905377690618687750193293806635355774034893297089384383664137080992357401641695513380478942575245488590287038746340080321948692334462209137669916166824039787809999852439461377669384259094403071597104335943476659300643944404109384776393145201745153990429557626411582619178461586362852259800759072764664734751244085640677740103210695838403048378067965513057621328139180434811544761512389479463732291990612654184456130434516268411109881937189218692169677698427589105578584161851444942397604479642778053698282233400242591439295507187367338816920531206365938739077717660067525169009761077021260915557665345108655782541766463183692231424018461638208065831641925533529354762120525890212446519801268018910725896257258413934121230279079335395422783838895699885376010515404597939827972905103683534640358030771633465760675277044147611380158991646764408620651264573312813139765791918520958106493849502755995938358690762936336415078647261386853275245133657797929730887418538668789042062877011208804461193475006540643796094430534007027289714233738772427384507122460923587874022850201133214071216516069948739040465450917013740245200196246970303480534001915317311435385150676888303099151107490011495815892734126713124828937796217226078121747736268519107667211417103913018612394174532975063400155427703053816575692972876091234713536127556490159567027906862937111280210143144917498345934924647182599746856922204820177928673266655356371641443069704742928166509073169159321365567388370746670407913532634598316646447576486138134539190367008514590892995317126788184970126458474261323662910418186910837876290626751196248319376739189977654180544121855986869422949423277679174540509109577471772397055496439467050785777008383081033586682139750825476604226337656784855372293896670230485199536489773175632575920699735690240775924624005441636290594735618878007280353522421616170408686980282753280898789472056873881145654763068495241372860637058937669970600710118226775443877055201017231196482820764371232701656662068586627654531450670194704327305157748904516920594491535391263414697246131459173765098056050643077954960648306826596054909537716598741914364180763492727214226551285079056333954562050780921948838441916200560348787582147723508638571437999529298394265349688537071425019309703026483873586074475128006549692795969155644661563049693069286640045113154072384690466608461531449129880378007504438215557304613473030022843934031619115709168800555182479603189210114445333581277994800143074313807578730303484759704445461642580271679895764319642242905107014487691436033152872386700909382178745503737241178481222442887045275561423510643123592651341576806570729946994985176004682480682242330799407278646242631439524145815437676069160712365194205873134424233611231201290016501009409626397895068491348648272585773289846348558045970881008376471877436178091330301653777089034298622504696822737805910278386691161895976370440609644373968844673731204629920583554650441175765012495596276106034162658539264221335875852985714361768733374644010412480248372185204924193274360399137986742823849091080599380165997775035271855504778583963569505891708036016878885311329352526729219410912582572973354477926833956187273825116363535158000848809087692522507643456714560849533415196580043412842944728696105390027846743537215635566312584573107847053674098430788718770406677177207819019672037858294281937085299565336620195148576350501323448785586242286457447811850110508305808157137908181977597831986217426558634161971227430114160297891311855656242635797909005992675639677383211131522408710301253620143743191964215069853940184570635856194250368311254983423114789718718900151523936066203480589055692952996638529736298486951153174934848488364127892600205074224266394778130159608960895311538423690410458695714509655941435346237401802134157807711914768720372760920782882314338334188248892666833198208979030460435561046867237444018234825945044395918456308333144196974553596077839111787277151651946309459220910409044378702913688800566360915271619613483377626527537547019112359645184079629166908113042953208598011080065758992529553964722001595598477570022901834048432416316078218988864122478316899741761624446073921920912057733127138897355566424880134816038751542531259922621087834966505802101787791698481088275166467453584142143328027557526794837873159423390741749802722692695225475273622109537846002901464506547650945676387619992291017142192632119229785957002362356238332461767998007396721139639636486025288364621481720529714717728752337941910714147830028873255821802526063903071083760665578235965276103270940706889092062895193954596214081023342478604980737976581886525599580866094433867308775417487558858007331567303624688820564112989827574752307340377210194505654966639331051429237869534237867633555075040616200081416374963790954796305596857191684622926546070130497449053011427883520660322053215807790275586224947522507391017766813937592958486036743249506991791749510474404199484615854731758585937077795239576135462768213156902455111347704126195315244274917764215845842493249869477469752720007873234652649180986867657375719483802099737386744513441837684592498565999712310807178154787069017984714722790601114211218080317670311817807947389321151724202124546787426503633903395777732287003518101835288150640987432258867182995677943411599554242270366383876463691707938735809320866449203253572982469685624342434621415384946260095763044410164867088727842782561913555625834452310825544316630104864682882340272213489127705581460722497355925036521323831407809459898358589023038968090601524599567717132511641842711487225469619724480880609364420075483299020766211696192728692410777105253850652559002076546475378879136093513710298669503226127981077911931416591640914046637705323428130632768873762630158083988209513456515295925652927097407480076313968397107578112617656484029941823629369585677742225251770112472648315135839828032165995351160526891735141625037666127099198833074565101783665249395323376425926124816565918118125278384779411277027092545816400291712155192848740665877780197745611713513990769753515474175744474408445206046471707131773045152183635443608555358736860311354007022855850741324534381722841519022966225325088600483584887097476712130063483484053970346246453447965757713337259567105838853670930884558209737790082500867402722051420056835002142601713840698555679005809340509035931417664538382493512428740193390297076511212025585219056019077150208469990115539060544663098144874633141903609132659724059675226316664568060883804555214777983316044122006014264460667644323876917515693254158302478958660266956906409555651271772757812442665247945086501838122965688736855634424953142323014388801982296898808761448124704809701750870405893117714357872247059498732201246850554832604597089834725501370204249412577971471805211474093783232913076044285957119822228497787515340188695467868829482728446472186906324712463954819608702635497226311485095810868328227465738861101677730668981669505372600836949404910751264536525499255822912398609929657643310229538357014755871084042886809133431375041966443629448255008210282715431160859648142478830275628589224695898131887072805976362042767831630279970199774993242924482973812375189555272706847887592482537508892456135294842777925279050636063403717316096889508844106049009211097821049480997546514265278589527539077745089374250871910447369794891070775692790857362573102180702866796917518489838728234969451322694293604613225216981580707147427893436253889749371040016820639021648179812263631265355755782226711773922507366618226450522088967014408967748281808892668743364866808116722912694899746159586534587370087928747489998204551788406631492764704939445931465316208372731097133676349926724388953382370036314321842843411409716273394683687758455520222329340302161588885868250330488604310317711900318572962312351488562149988814159663042937158143394253186720256301040850829858872740340856889024767472388635229070586827709755979813690403484100875135587505356800672712299079062890028310361700106940322496068435135114711900030245505046412590888764766963506505230153691207688766810669122207110623705534269800580800688614348748307759355390578275750475863960730719537468035056541893608491218167647795664743373701268194549708504169000329688348020928142299498378688458726413570195548549766294645398142493133668104911602697979689218198020377581963477081454257101289915500626329533373660542509496509711677957551793037270502900327072744672637633646884197391308228535047965410785017148497174999424081307212589413184812223947150201037228308927630621315125629622533751152868694815641097871582625689682292530050394942817637204127681221652881493082781056570228898903826122338419989098201079351820170906350801634817099454291148998537731817770710300848915897528014892212543998836670566893149590331443045656521118841960174803697948977230324291858072188635512385293740789722253528486474123268308074447435993556760992668119077293119090133084869030528140076864107830761982522143042662534317760436821467776673849959807546856683468354062815412825644288052572861025244133375136924965471597209207880758708870262736957742608310561314622216087998533572686120892576888678995970712926644975500158003858810859508079006318887018225817305483394503902672832409007371605304518220784731275926087013554688671784234802894181656084114854250209386967888617282609243207659175303271608916111729359342806264116516457402151384644649780185225171173248868269543411936754442533626823073258561909791703614266663376126208185301907125135812025199099867209903472965164756811367804131874697799940025377084876929099048415705917938255445869580988209020975348960540455539302534362943778106819746806818637446113813066846931771251613903015732358048437382539313251507759072709262397642339246200758338722326345983131326707689005839852014871388469967763509899279441346608229168414849857451475001141648239688475643937580272830606508963466876888502762835855767441959747868406774201129063470712627042918777336844404442830858621988835392461253526581717935062159196442518874489068647876698491845757475218484288857584920988877456990303971347684307578955047888296515441556825539860258340469718658467544139942470970994935310586560871518368453474488287301663503163510578544060324902496144072597670222278180095838516290784339200003796356177502555576330139399949373089679268296183787889578573913296433199776759420131860943882040922801799904392156516843858673247684140036198437270384731767109455069260637658953605328714552935410762514206587282744762500910767491154535351964159924054831632947857674216185843261109456993712803148757724052681459008962087803265861779603800234624155150280028653729554084591754159178202245405410045053101287852998639363936590031989840663470167611933981770106413265509594521983069399758044645241241753350786437491630099169234612680667096442071370744779522680729919986717663675238279276029926018062836196917938530443425445489178244298048052488038794553060322699468373418417795943325016946940806533203519467527794264965284172076474913782427548178847298738560074872708072669345648023400967752499081005564391376338524451935212893568338544932981267288193252533365907757510936889771425315673075766570035074320256453217223544210096122026391390729471155333072028934175702158156630914188178857799887178134478979739295163166866004593735517194683193002203382054108440186969864132813544178782176685081178037736134606878473539231327540277283139933283088268474738242356007354999561514226145416285271125035411644157450331588286249024638356512578551397407294480807167495940474788361792785516127466091985426909661276560760780605847041604767163315334363143783160168479752929923793396907366289019344124587406418227988973397333386016025796749229644086885087097336152279555255160103796197286302923088720672553906319246841075043656836312375424391094353613931429150094333757553095035123785375328738934851839319698802204137345695375850707419344641861790365184406351555277390667386734664509288693413366900879100144820980948046545247567851700404275457417414521800387325818134802666736822752549466260700268470157693552004280055749897989979264547966052326746675027285628521458087464684915255745277705111839387236564337612338074563872181166109620100311788227635754562910799787797800813716436998868959000589933372588936924631278779485910399094335335913516367680421559136453271481892309006894778493891210353107804434578689671511145566231839366350646074952111104136445968911486881070713694571784418827118685766300574697374717167944438093416659988567709740681619606648761267618110909763950560914308304024997866103004270574548061093768519044939432223662082063398072497364639537241426241594260501656496745949670513686541140420329236398271074652185520512125133118508596733047434573772742530811216435374689166010973459536153996996801274942861374237151007543833445590592402381976258622053222197957605752769529130612217339965043262445243866510636245041879458075737629791251761154675532481426531749610475855354375073813417267865580619460976255942363442777187093621818049307535440102839859788361746380097381543241926907631461518217723554411334921368679517548741236646916568238664132463320138210461893777975413113083794477183827097554989646260714636609164825649807540338231024711882458533846676827876978207886510592905352547479740397005798817462214937207003935035416789791524479453828932749686325237547557761198626524998242048274318416816796589917581634062137769589977272011756977263424752098227236104272742365841302948182713502164259444128339989853577736449104212903343600699825978724135066121757218708689147134037958087786712332721208978445210570649023482487064456569456676954940678214876537509604447403870136161906640798614503642055746587060255738597749750906525772331711899429733796037916761141927845272011604979414507684052739859585559061471219756076947384821656742844998099090730431202900494418370365575021967844282446657325254634212297423310444156425026150514518377999576106143980285629802436522634097638737705887518716407940037590934424248016684709133183134934223778340226520347635127609243915254952526100173455885398911292143089550143071390123148523237104305825604684683088865404034200998559874421927078819234521469071469082968592966256150954900253120245518618191545730259475571426696623883400297448591726605862830052266366130162217243444783409495185616281702694482264286043023100716504175620321133955189003491290615408822947149656947337739187854235656758263119116454962591240562378614772214405271127167143350671450585657430164010738618523666487706999099659663644063533396827700827497410065942070556224528487800049578080214380409753887467843974399033859164429030610154274057204684512918361384012684061028434191087219369067750138611085208198060942322547886749002261795898001172256849881950193326480111589121994120854557956234544938232196901933672415817193398232225674812213559863435427447228440418484248056802642006381651471579699291960048391318512166047041326592169376408081634297549547316099412482786546687884412411632668317915558251786157259171505003185683635144017479092999005066726940607049646460862619873736160108698932965999157925770371431779945414955553631922892894184554270513089982554538604761087452246648408000796176474993574489359850413977838010711104993118793722095656210532617014450231656052423134365601915663759950281968733264420925415227969436378770794268720327610142001568609506515630889198844542605755966262717505468796646718406034121482921997133290253701091469790990285376315086738802351533119031060341235725748275659820907839151320610620620212522755464099213458310472100920096198401543460337138988617533138918739959929133758235109382719759329724701355580735720267330895094569964608850785385216602818211321404507244600905020935400000721342864777270571116368110482486311385985378899423232431089290923350975261053049916417963903240825076256921475820853125039431514308011993226355737740776154587395934558204290920358226421165015664111411973119560953944199592807593379973423929817261114559531497466953833917190548971353891207607285790485921251455495267879107997793324146484177591374931778438133628307644383605749310327814704278188783904449176452815611305488696992741169882885005780198387849248223034562361668729991770967245742435866337688767886987635541175966780824759073860825869141282195141685340185308372044875136588471367884964479756787005996712920040918149802189121851451161131487283372776973013821014929263443863366670292240100926916043216309373928271450130900594999321599004716553709504792921235729548674301402498987920872116350683466849942225247608297622276891375784054773566019542302258890423901450322690918869704000153237938825766318701340487390627115555331689172583570303547293038723194499636030147935807461722195434774919424300098871363448932676830455550484306476367622664563055737190469291121100102257707658435068976728320874647117494222647800053197669416855845600468941915908853667265280411093478970173585840099505736713046868290123100642621529449724297412313371895177343163005229068631586352405663963051087219344368948729624154232399274094694052941214326916089869879690106692128421601957677695247957953802875745660688806468044886781070824081233203936618018583974609603366685963069540086923496691133379968235990952045664142766105040687417512945997042137458522511503999146508879158777586915311586325510929259915586209820160387648223043242954687889500657332447156880566781368807784945150698812299991080630279771251339720902105778099630514252232584741336682468581628326234263283365260029825350181582648683447567308228454369334223818725908532983637825934252133028611427137774378368827870144096620005851619066605870865771576357048039110931090035872389127623760392942801583507521103220844331304320809406014940816493631857229853241055115954625603548450599424447390593385750427600349078586045738928182684164225591813839475036732060475724092286986803493524918572888975227895735143158731640617508004835669993020445144984236502566032492863733841394971126740494497020237466293433509382293405109436879603470884923992366252656400116553340081289802599475457083131020335916160576783568998915618965988746759644238469326236045689828303616422296466948885538998642222806284445519315408959249441001747503377342026440080579675512643900126742733510048265721906738461342712329878198843914323611555945277194122759186484493803053506628091228182917847042616739668214710851964669507863693646861196466481768361696034520988431193906071058157186433709610639864544733568592997261579825456254679382891878727579984034961310218443815967061261767554637904395218562172472854379029628901446065844024426120809582971758334931968572405432628241681250223166782500250700069521403583445698138585957206692524335473612324273061061246424972392246130875379208493837864643233307473769267188801976336717058600184146835739082507052552066114001080502818526523653748879050988498591702952479130185174303690188686289850623613393375965889871910471802462231173645981650700280649238185820250949299003656449888815181909509426155573383606412657061651592068042824938747960293627092152403872708832322447556461042698844893276299856626468802970354065410586822093525389672600230987382880479904948167973565159972255298400705892433997922033459978079766712744597308341812084969230742733360867322631797960242574895487032271970034313030917451089134061731646668870318727267916825961584355192507338750077575979848918190192833682226519940630389670595752319058359356750382852811851681732789643266095660024893787047528765594101180843075634910779044359639476008205969460452191722305564949614287403360019197176694005660034114179811129510173117083394689939801307937592403264019103985736413044753493375512014619675612812661335176985063542150096051126866524998387967100034040097441622873211108558299149459642280212390782396597164498674616334436739730247517414835753344484824423068481757713011465205438264188881410214271096873260258939207181973381488347667349808630633924562734474835658874824789986030170266110632865120589208640331910143810269678902739029503725872425256269483982837470195691989691022245824722030931302374765632578195122975254084189924037918562049205846506564863291483672565953962756023914332160698070758240267395237905819765649794786720065642936626266182934986504684515549777024644644038353302330656965980288782741632413480159201478778979848327198026409195293062690839412348422308716373542736638660419794612723377340497026874177580289709496579326211026520672862939409224882358720717526754128883706269141724051549779309047948193263934526739612512290556724502227900149107418128252949413276474164954930949541453319546933397088730781828822889913487297439789164730430642344813467529728530684528670603292265061423116509198962920197286949695798770016538588335338917522490721131581366593360052040146718736947518024445099735997017581935757653229312038376833520656578575751028310715936504910774925663415078829824195139824510195470503184269682746926408848643913051866637112006565546098840028706872275820177060946489391814538701369491217178443417875330272362706087507965678814619916942029566678210338919977793684169775866133676318198873770454344740648200507917167352806615693579011865811930025901791388957499804559293963674399678423149526629948195742352666659846602610415793533905176754041947950654495536247775148633860888371748886751177719654361015299438137170895203899489908231878814815640922761051530788326904263713168757864418631348947084765955155931324201068705604588997889008659513535590469315985565407743761837949945173675287355720765187000655257641041194088624571696672680813734279380170946857358790550519381263974650073303331805779603128486777905723746250017065884424734184455478233974554699084976309290103922278805104132240995285566958489159738545439374443425491927621474962965760089387233274229296155134971539497193753488660188013548606832325230180729289962444562806430804315668046238904528147370902878364982082979141831586776319200654895004261121814559726577853567347436303011902885689738785150766512920799483355357447509987769876944972745835959749560024985053041390033617203126965067358547336512655889115743880428899179989464019339886931804813459530663932165523090326557244936471173349475378163039239383331002878581917491543408583111569131405867567712978235990976098196422606857709970813039498479460768957958135570943162870561428398616287532538854163180831941194750675390652044522460625016171184560408326470936448408242294109606773760701923658834461969889934453650849265087385378202341688469546486049461770000438136874073267442382938363975612718863052956642840126711330013316889244732479650665472765981949486088481813516024844362136303911329461050649121032859963135803202395094237353568852830874284723440660876080207879176645427615169095207823662498940736901559697120460470210649792268032528661850054329704886282563992674048749200357196088594499518570072688093389976619746351565397559517329717193831981103432817172842443614284800037373608262599610437454427983665485760366701378813243988681922939264043315645118227820283435001486518202344538930111357198243942771808898099103785299156444720393431953561091778495097671675488859087080628379255701643985303819306514583869190702321929415772283959007980331065849557660156683475322303256557070904537021814443356403995911517832997818457671577085960509673760221572324510364176057469404845253078412766194137223504692997008088541844480123185862410706676498458632556389243625800635668543221054047152360736960005042637926917630491380516160392795748436984519364583253581682701876070861820760795847274212489365121698981220736593045597849477694962428415073411496685698473246243416920767139138741128626543749617642753700172754407165858368328312664984598246983610234881291216137773096440029814211222781015530239275102998794061694249442949728047810033847284782652968776864468305186821293645106275009889154148201029618296028636897104217669598836668895912733105886423019636838057535237927628153988980870918905502333208597234798158797620336495220426489360065194041673895857227964317793035421854258905718307731559914656056795334846906035219833363451077759159770017503191039064888369979090499528833725270898522164385554191162905582840990303574437606336247227240920153132408130062256606741328736785758348672090632303760581290020499309425167959446750357782232339935450697008179605224956965436554798663030924342496923934128966870818493570127563109484105594678317163545988534954756611991524097955497388655432314178151338949837955199852690251724998794990139630246873003593213503179881463156430045695966035568675656793388433041442379911797890381820747495781641756775173760177753755794899591717795591178503704199407964176906818680738240900292560545488168763618865724248933273354650929091155103181702319840890718576717500612949562982453863332306590518744456882733408378920781408285100179556924843997259249391314335568960910410118641227618435211656434421891967946562310849180975345996681461062852248298412365547252059665792629061522967372175698481157976683336065774907315837824575610289269597454382446994306415092240585096904400431143900190308596034766408673708799435912874960791639523711923846499750423368884315153150202610892409269899273592534773983720459137023236151855031375067158307226323705108267890276844345530545215395854798197252545850622529881370164562184514087042635725397195504380850092520239134130249221362035890416305799449080548870631668363362489945206867755576143621144369449007498460700969336944911927124703054201518825476669161160566424162289240802822801847323875694792283916261297178583986888692211939018148418111440389100572373741720450014650972372910115838835675252507701720903616724104147856189642991480397913462697994213546180447982508919366520101277610446256156083932750548288200866234078015728641871275700404709082328739470091109518849614858793203199514003237143992954300192266752328701199270845001963352002045318236455339626818350641624832192889263355330520686226659990045711945801759247484794926722789101984907971800786251100256638486954091306379945813820513909268316138542679999566529579878695943570103575608162804424945110491237035266435585492941520112663739618895131207396591678155197987537625102087304884153661524342994908408169861095150503704856089076419121603444636871612869473884694192476696441574440141539245925373239876191515525499932723211466444302558490342586674598199784013730286692984888531767253685736350419906774094766005124649718389862725902006053341792019065382298680393697318498740162801359037246363346600641082595412758539801163902677194727925272193608135038486105821758953293150974775082270272640191818862363981177841322848242901807317302554497817886518678963188578221943832045153590201120742395248513132631424770447598104967270850347097183324545606209461819970061715346259487073058083501725345356389482848247837647569777977824997163158710456073872442051668559140685976169205268794247708519266142944024731344162043721593676286033842418215629194257205473760646174844901293022211937275774776376017254217825966312368452933390826099218761550207431659453440285570386461787870685816807522350215465531687586577577181187392311441216755045429588018575380042502959397211711275295930091413100710424979919442210482955050984094451131298668853395148927756583113144455206635753628895128295061624418094440333775566919640115029280031974946873741874232936238104632035743752405163436950229722655152520225757685610777429172879165162659578190402570448999834416612797664664736400920623927933595311676030248890380034065517338150892646072732913149227557302831957046685732831583802991117597695378163525703088516620591572870160373335729061435384487436004391363650847955092319589344526106315866581138529862631872650908940829398512572737443622437681677270490554266163655666532836575272562923452657814301825418765238993793892922603714462899896386012128259079986220410741223865850243119157460390580063563349529818891274033195632093967133699311004139674842924732652743374079940752063189584489499611862908480928278884333182744698280513636038277987176806541399774192756737003619942811481702404205038789906038929748052755917127246362352588925654239793646004946864219247100828861323618126787540880401701546676515453215430782706332563886499416227109683014162275374441429873889356865558862340149845034626747041581255898291486326695135498748042389148298929532291455465401883648123143298008358825078804191384681031701106937825089082500080562772357634546749481073228948324372281907498864682539811920253876125359971237467847927020536464093865159998262674870066805972792628307077616340126907078549997247185279400940114494174383674419977390457503930938492122310870215705542519338161526007780263038033068700025577242832231657883031586213981193187009149083052403921251773338081016699115463438846771014117878996774203182931337301878565091235720119427758766234068027547317964967438956324984978655142080667550584840918232301630744640116921903138800263270425525354583702598950527512769635131189166951957252190965984265318983247610690136654876191338485613683635585774195791548574040985449492987477139142533010685795642124172195350255836448045547583596604560936222993314208755237572885963290593025280113044819481225897727866382761468969815049515489401965927384107943002023554481303055895888147991728112902522844567028281826148873021466169953672606510616467289018735468988534159195026271499657856087468949934845119133915235660467384226408231972687800497328570153400282403426766391593369683747853832791895651021567484152861654830764403628950578583776210850432904824202338870246258129650323220550276028945099155681801566629416089814307485921115217085469029826559926884026863046614342405589544973447717421704933602114364562787210145298545050700564171039126568929381820624132027062980193158642987519788995835838038895976259913158294057844290272917184368844555806753500329844595384066769997111741263790120265305881975783386155188195874869381296394646251726648510692907772716690439235010346546342678153217785547636293474880268640176300145655125477931001739374495327500806143596307710297815653722702551160273027496062714477441899418029328072737078416930747184467926839825263207404398240551987641538858789109597083758002323565593286355120656557257848081368684255316742326435396574954110456163897883884796407046825842925270956182213029675708770477689947036370486640275183781058934094912307001105161906464360327420027886080199559439675059017293893410073716087771301192443034349247554030171337696366430715403039129241443056193214229911004234391833847352738775604779580198322776396681810579847611076070578663611918206867709177959481558057434417067032938920804098797968336235034129892800105388343883204428465857937454792335158618037108883898192314385137013686244608573881744362749513999660303635536511635277517976959686571570627475402429129336818582670346907701575384847792059342702177273236112120600705931925024197345403932686574797734813589350841776676325568896418972806881905851820426905029470377765763022746066696102614582785490436080425733274264107560468248990111792225600070366315217142862507199486338628338523537397783192067276545713627781109503134717196771839201827717403248957456592552817542421911709939230784371589975856561678399265798644465996193493034819564756059457783898067343867737781643683013018774491542996647583923781319447643062470644399792339649984518902121156066338484449695298324233659922967963463846297917848767764461693147578337325666441443633398681644997333138331660160599315362556905002574195060018827944828435475018347770082503382555312911735757579652296266875787520001334174312399842383988734349793897502824671247163349383929482274224495320397455216897552963298303140532384880428395243217125992516217332827860211784634976788776400586330064085723238476768837800951401147777752048687569302021953003112214548867646413265645938043406470803864979980938241335467529827351363741917463251991289518866297571563499185867427590616614051613259902447779531165579055635562885978880724479820946043948183801390717345110992253060656499998155515029934745254530320087591576568201788536262137033126789136805049877156871422403110158019778794435817585050569175910123697208746327360929678593765904252144765040454459007079955189204103467858957959516792400362758798132772702378704056935354385663160377293400296519366152993034022898333285099370040990570386978302408066631614166867622658457811906215999963620113292097048105026034037292151935617999170040181842162386858796368510792054263304359879885015143938762180168581718343450684727470334132847516091370896518149669675614000356465351079252768867465406742969196114066930901083107610991350829752196521829137239211744067941522498402061024803742192697658783383118015557486003692284597641935691387602517148462109216300858868111232502804793751365119181168308329708848008252437077646106344798971982925755710354746594274465835356017775630887892068042862830520758772520241291574192301437929833920873334491540709808930475342752427639193845792319489189549469015313266990033082701522308794425708556986883659653475277402007232563806965082397014717566058783943677156294373230836640612837043481425755453727511324564357776895017406551705096795752891742037286326655213668601717546614862051182537104295257216215045473701132822811147479860411357895422618260313835170328581807630625520541293092434477303267410231685744711885816993653359819591176627487061832923877018821142992841982638808233856722209247277062555536140948812808656375498603389670013024001304157783116727726137338863539788576255818556697873707151391183151604299211133486846294887088914914866233590524724068758835226787984305369181803238765566109576857442079905409632150982927015343522816557149149544422354418502328443302728006365552039639686469438277702675594484257588868091899670315854299048906277041071652566273168830300892922051915799166160161066155304015872021575670782497275308020044027467372094269155217787369077521385737265318577365949739878849866860402198994951381375498286248247027245763694584922871739267256847482059038046353599374019182464597316576720513973941887363583122905133685601732129735013500169219654106243610770606145977231770004536036115916326846132919061037506147773376604006105802468534772525052919419911962479771988629296155967726976742217530694082977386495219376269239767532421850747555321422040139390314424153204893219637732737173343254994644888056097546546045709816630240444802305733967039360666053072692415354388528981033806537398168209995296246954600381334545245658917939472625599191273530699443876650265124159564656008730599913090159345189684358461101668443664568220197955373131814035930097784536252726945889092915290717838304991768214868763485895863939562754325087613010257296403521334219664147120803188432389663269960689606816577569758354183806695301919739902455260003304382950035088774753122566586068791531585445769389365441522158219992912443785379711491926519840561004903129520446691752594562929098168881482465093832390122273124286128893245838013797085287059542285438220207226056236901719618223263294804548866098514747041318576602258940863000653640124793249354334418326571142723848357857823463921091007518001483990604418125814858673338529814125989582092470900206517404851506820307060537148778173985150195372304788653415228989167322942348510009277079544385367643386204888440943116035129819422717472862042432618684305571367708600243253573222473148686550520304999103895490902362662943767664141565272747675701922152409910446232814448490751653987566405299311980065500842138535058014128475750176527266226498763902381143542855342365921476873108786148764045568576105301899284681506898797094492109254084626150608683324544611263882860363902038571646161067361307900794388241448042101694532098798008750256383713346445580505029155197166129908730570413829215747623972653627863077556176537180098275562667861144346353574409462042686136564437665222047808362149029687879184455141106615134941795473072476917142348330529707143766621624698140095222493034834011172880214906238818805725980434983256595487907407879601190884500175305911219903607810917213749147945070773730162346664765787871712361941237357372451516448817212200160797606717035405341082000752884100101263660526489376034887091707165303938160718463364753437827896407224345601245134083944429426868653563720541008948550937222444541483192375407470427814483961018587728762820845958988140512643586268752734351672307385320607775535331783277001024731533400077173396831427479899601003832064760363608544906367232498739206778601494385056465127751137615254489596160965359448448271519097534541533625763620419268743338354409859400470650089924792409084730497168048640084413273072658403171901452939901651616006678499091081267564572921423325695883832262690906258159415655210080169590595432196841535567192736330885264734087761562735089424364004195930252740689562216531515153957923359294047409596495502284354124777315640932474542890756772985186122638656249096409538305986703690730475787520978567515870996530804966179784699018925394964413454048726800257251445264994000184603718160342144624846202370016026303213877708622218454908553342304692045269449856863697902046519805232435714117720029491197425216531299177607750673954208130053663908098346387787424645735007703335356312811169500426960392179777548179833440834651841093781468255195635388904211098400661940745856940195396770664381733469725764664352672477690475552759857415267764859734799636949785808184156477355612659118996368310453845833836322651851847109332562044867216489332604361649835829495345415278983970461488416134518877741748097570011579833738490552052941337675614703672866054717450663487071607730148488950051807791817547471524047919744796940823162347230874934419403603538513348598366663519768972241792325540238038589342523044202162531486580238131969299828538649732976368218292385679252173657372270662181623171505204493261697771406848180469810385497755008464792484358069536511243872206291187997267980551927863404411483349516795540896555737838705079873057298875321566504533001087259770533482369449129648628545911737913083910035425232469386461040745206634064452364877907594326982607592426931931808997529873522604892651432666186581524505674698719051816006567111869896582945513020340746311258486454351378715230230986546613636588304902224445524925810152247295492116572609628125612745206536449097557669628009109342595246644557529976708888770209980659963610073065267947717127262225366136915703383301797602556210507575512018244378753815220059913146356492030913704116247810835305310107447524107969641144297135735069613774316619813667224428648103338049414196328557713720823735574117719193828991051971837389738954468831162410359334313707759678806761848389620193955863209192933604793893075064601191534712602750660279287647580104408925497471949934400700834756229713780145868073855447197911857764829641529199655198401084458804043121987041615582375265025751320698099712480340496424909298211990102966923484815571076594827519347224445985469211812723860166576989625128001338500080964210264936599575958095826979719353193551737027222540988791961379952455497787250710186950459278786926880686940132998664683373457473476245747072625206441011520250737388776683561777620319215327214774268776251302347934797751099451965081629102052735947647584498818326557198825499154524962555592249675697375802037394489925237314673813653026395104704549458520973025639425537782880906235766688233702189937249211971726411102560523220911715659535753611216850164227350854324261533193125790048480477297963158166589688319947700541332970492776030159396708440093836683690154858348480954906780735032684155771405716301409301151658942551045737182619089988971914430457889039134026062700884319425109218077222659078157921670265361323371731790807494915606014460419752074822641111780644651117648975513531317902198592252556186049111677229714407541263791284817865387829466109452900023876140793923090888810130533839115291969281872902109983463795562234126857009592720247664704819036626447506221662432051373585843562043785020958090532666701677997776063085694026794083679859989097216405084852910468179310095494464039212714861770405480429376971745164781697079657199954971857040213207896677824282129930007069865356547495671777159332671549964928236274573460932123028400037234113084898093332665464301443730602082453543392434371544613180680226773897646804026931398909439794262121615292024211474103900443106832737324411666243195874490833148040814523738804026438634988458548334419728804929301085686683438495224226575100233320872896122561953790803442128411376734179938424330677259700570237268336261116460564697910058207677177647712759199276098336656802055985596290545213052001206052135657741021656743095178533400239655970194671276909400216889754006210983830478084932151002780783177435566351970085802772157653737825810997033271198426261736019775161002961137770641797553053208259160967306637857518620232598031353733159697255743678600956485765233975828887596565979044996300117517099515208940287428099160291851899623206965668096552215452236736349351606881196082557241443135106933123774484133275500497318320738474730382512314244707889682318983225404774985834429790783069444781694742411498988142920291230644677165965140162465978995837927008738563487924266512682500912379047758744518348463937977907700022919596982559661182909045166717968636531886184254702933758883876360853892686758531033365652326218942836297948439888583015857030212850684708084222763579294995191298019034971816056079189020791868035153782343322799082943948334702471183202838147507583650568164283527958978185050433372983769835369944702024998337545326035857278034332505648125531402199227122613867082702378393242908372513611587449847817359760528670920077595371048478235619317387681015372558826825552533883401147089638192705676484576061605312480368871661147756743013037826999841995784625435837917930465754128854461218243383256856668083478970564691742636349720326211657899659469669015355690369041915515754186892769086887195427439160862381297201005007421094098806290886160223387384522514456781092647432503733259349729705819527689701146987623551233107026666436865348960139679469773086794311030224431552854935627385991424879686819455804094190061840722557317447189956124800530887932960193410702759654784663144589666874641428811916762481237188829857310353349793791807734060652342158460186528738334127366625608610818035557261366763978803542275685037892483673125767443338973427950749661421447857331046190345979893998936431953647239597140440374815016115080648599498763905274683313047846432122009836545173118902942000437657315467034639039443085108079020063716654792427737726074213438102808764470002287179493029442495893641359326635293523253947136545844650184988673394450588499932180072061326895940109564485527264534721208238413171470889889302094165882133119315141573477317650670277335834840050095259280555258137389556492321493351908958561967831572882169444880140023831193008437932035064156202266895460396704892875491802101511372733589665833733768077438629921953098144376204335668320562975409679667556174991248300398210754714233923166904746358603178952442251980706882674589257450349204827911533673933046077040921503660315384613362556190679036739626842134486342120974615957339863407204095613545319572689559085072895563978131138771441436962487874805356761123552619188678938598996243955367443398897172115168545737029028305606535283892614110296786874564925507281520799575846195394579815109979502203171682274222107040923538692773005270198456586726509457712394557866495747755404061040308825031939675998205478482003036914151354414675685684909606249369354835644236090337375204162236574146211814085119736291365542209043698824119819546900489422825052785582314744018276120804694868585249004456189572921318571921395340155168464717588749089058033147786170966455788423141432187836924946559257128714678287555778739618904398630689590637037199485327552450566068403998033076585159348912594258248323310036339388648461741403849338443452970713421367709059893995828431504106489568559172459439749219474785937098425045715968368028700428929288520081657192044176655085343238943060411607795802341929977455478412508515419861134658198173056485279778885080021220347359548342763942617383815700312721970366454182874140452952064088534194980195649339317832837790950669298910336485163804479978084835764025205539977909146852194656275786466218011031878590605672811228405198476263021631503350306002185419812345921305195034196484387089196968137363910173869138362822663566878676172078815152735511472846193700105668327694201117676877134841338582664301250521319410137662313828252164222471396950625878569004426507402651094058189846857740837208406142308625306823889635173961694779885982368351464800305999320742440188998620957941671763192938123678245759972125567052482091114751379487031248530395203214054241526738771622604426836889560660997891614468480108611145669089868519550834305121168651831494392599784828905039546248405610629351559426206733166032587832073449615397989561407405418049064806699763709393151404594036896128871637360376844660339943291446723640542595286287139702152343418485032120266469221671852465933837541075860043848010952494289579105232908204002187129209775765486973196626616733229408899299949622780984160373718308819972605652042505432847517067287508996535457971875751777132753467075056870893216079314789224302496170750739423383161195873994635711709999274715508818167902472152279243126298656950030930937365700224357807034636719861551093267130906735371518739815211217466815870836556071274211610279527014406900215947333188956118976627452103983045012182001148376732937177870932083804586244194312948073869092130034259812605233984838858858339737808761051224811801110165674271709781632654064699971813994655466403275570040826682861883559154190147247747994197449952713191332532963031546497485088109948158655169993406487664037959955520298600600628362930321817983707848572437786140577722320987211800936843103811658425268287572320464086202835675700427024141965894636848380755195484605578388549766788030271268525737259863500117483467914046800852056438376148783089031084685333474094823940221022043409346763322242369307949301728486766004188239100583407848833321064380707617933853609903092805729496960304638264867753914655069674723156253629287298568465876903830768745326896888392170932421315049354890322737014157750608180178521758908635233970421114610067657318208765565677746419911987871109366041581052133360956873922691371149727235285056900537663044675279276643386043873806993155011774421532124870201604291042142466572431482946195526441301683006526535364751227109622709904394127189464507336905725680682128483341696730684343452358923440517731811767123139402305070535884712119273025847725847589756018117281967352162840983213749101781428971333333543865896939590875316888702974747362448300826386215610464507651356553435646252947468904333805875066806892058863615537716344277000787503470571392422167014318792466594730712268122323514349078322287101706519851751724283580426388087369571712580349598555962544259921121461710756003238718078052860406166885512968235022548797786621702526208144690783110775043499596138262640644552505423972192797568685432151132158877708558417468060424089403374825809945570117725886216818666668974813658193037772294216451369250101394840741808118993273266692298821577484581288273585038340076702520370036391385680160520513818994380373740170387889654296723421466724878581010195722112539477481843446679037855852123442458534880401412051386229040864005550170130600632272314364932175671515330268304265597393307635666017285022974212912287639408571947088344017883302092234176731284194002840586565033682571627248764374249536345465150469423165736614416366544130839130271782980962348538774092185794031132517042900107395209769013681511504138029221438247422239159600509232171112100813516951824428178238481504805575197702718600521541724208676268758946659479146065061557899391762256762942486785912365136320212426965511456105388545666991451569485200004924716497531654528491926872509295612555155610392237459140629574163746331669753020965774592361644839280198285582336218618162447690501508063696790776921376121186480279500936659815695826720252964263584396187667296161018998486678306436321676736083876494904333242543651277966087900128263396007677646644813316765795653386333672133071243376799267853078989589513152526689468367576058353771887899596120549144467745428650837547931836042489077108947285069545261511268609963985644696478239288218569911644301041558488144045280897927813308023318306524521385042911079767972448779890064719936699962775163763063090018112370118384601985803192529724784860393344227660865460540792147352092741429948547992522950444797032791721348447339258273286728638550446370040654024506223061730508752374655075381439578724873814554454513852024486961792183679219555744218414612444692918004719879128802530502295893311476058062687633061754670893710548888584315282214449715676195844649108099812204917742350138881642915202079601446205467056796122340497297667933329759281169769627115383285326905886449778735225682918927317102807269006786156696946645096709431410371830427024025155804710063423857610247758587694736308232022625238860195966696282835279684786346606136602786798704809437049592076980973662892542483812739453962521498248065652608983467698189841469637598678877063826735883000166446823894332319181655312014438457338355340894055608036071612813237597063275186589049549361554221855794241789868053560326057128018903245098169111364621357813551543869671897851536635313040064036842549507935674893050596276351697048385329811371641730346815884454446420920852647131472476650425182590083545758829619609574265848016324332685898357927717971904612821495631727747758191664049571332185708348276637037289140148715989527391531981232235702574023566660347380027916575023226585733709515899061013026180810950924772495859944675177964466783143442446753765327267230097885445180620064942967184030924200074016886420519796739109939689323532834662798913373014723137399870709885228039214385230107158722465458145307565889680699846871837586945838922574263258457111593903038725066733911655355532214557428978577190990713180121672160185740354902212598222149717395146541033014862392533178118049292878851272261662730856598423660336063769583177871320224101264159339367880756499469002248239262534464988654578046709573242595560605731153539017323266127941472647006913507980818834262366589849513625206381889993881663494892443129835145518194941606445701858296148655484551638772962093622998467223429855080024499766413153240362508469803790216970506159929944306613221935978695976534000148731652933851629896027294638126281554165935068658568670402506772682105839684825372618484010391517152043217694882660349808643377440367032339668655113779422624042786013773654256604480615698137869190674421223493640325464978973259394991448540080787329892240912388592442944926182961969843258123398062637585442838095220792643890442806667343470696854562790076427022343134028639064998038288859630592340933860175506534840137163923483948695374010624309471981924257402755175757131678191074652188747341273546683652138967815070407771109199536739210789098107219840338026936701702932395555691752466781140792099077315083913273865859205412013410407965854982508715732457232204328285916780682130224398615112398885780087255788720904210560774622088506269834074376619027257279887895146337632952143148894818783715198346528824436683103015615093187760885786431930394099661263666774597835464004930941911462098249628104014253553274711981730781840656750651440814965413813515280757171882258274837142173914936437519012776888631533638632277748103647596492129129534013649701510467850883953181121555180420266976212880947561429547684372830244187404918429338877742731881066873797026306818601415375766512267535037584129647941303608975067238047243417995593411340301895648405159923782058806918426812964580095658204002345324762380638401366620169293058445910895352041763459044343851035480087289879007549225164625695796347201996562921553152745410469152510391980552272107524241492192093693943408728687273690647104592158098845191603640944026503333904261475163294644503074017572874290407705475707206499454612175749565005449625096944763627980392817390784350608420989061200484685787017516033948735978897699230248998387912114970145315626929875074648126498394937916064882122300409990759413520594696815678837757727964043343113410922443701608821113822705973056272081247457228631684623718317683344437240575940479371228486184408219875768687352499453881773333338262161121797730821257260711965068623001896505908821020919637699199899574513643980616019917852579140693369305603658351364519875322353913408518662919606355170743400495973280446262810734310882010039392301980788982172357826456819114583083345692291036373357072327001635847710391932749314525988246573807864718418420329410937913846494560190231927176927598023640282056462692836756470428035516978693723945393706482025487228548540166096990394376205648411260944852808842195466294173352215057925314623009277361149236013062635315464587453081029588282083256119318115848078318795235121634775549233047455546410560700180124679875766704439999345302015197051424942372237704739501533237840773020344694807822862980907838511832848183873129054718031584885016508892855711432026755148769281520973028289762258320646892053745504388189174188651145899364315765688130014271516357360236645648214669560240042775420525727147034251334770417068734124770910877348165407160219627960553586941031426504294285447695857497504090702700294491722480386883283208459435578907726910650963665643266213380224585401898871535951751570530288643525081400882971286073668172239944399076124852449640155542048020355840956406599996941267917794627853307969650815315364046102038407637351919682844355380759427396307908388234538817784922020923555223134890305882911472951423140393887350931594031866886689650723612347718542251125153433810418644769186445189865899254311151358675137922579748868173504458480835497611611434413154648188137349655852005799590291756835651258297093303938520395772425191652866901082500270098171939269698076541449436543147132837069674385898606408977833526578832420817723570262924817688522286696284613850352399464826568347185243968355467216957769381094559910786278765610077361128002879778951510906134763327175340567370337249922770908921653653834747283251834381663440180435544652886008293807739491818051881427183389153529036490385726306918654273846261949492399655496353147622171239179517974903031250314533694982481636493929112773846386340479106754320864998495569022189807669745015276579047041063135322435371647997167821988723060797983689126697937725958205990546833901729159468791007574737705759019845185863747484394083814284308733915538653868727378451721411945933552416700513553027402764380280952108248378263644162803259078149084836938103029097339012417470808067337006166632791891697803173074336812213527179914044664735449659643923661859901476095156978818043887055327957313537229646302176971695578620745629372610348975825448307885292007821034522744804430418449702804942232358649780236869977435142865037840798580891860044493631033361189136907643606525608528646568089292945704400553121071043383820935857320203190735389023738406025068617208059735095103342472173891090688095444688519840332235995533637685287821590456711572456150444351573902880046483580194049513863903668682626165428606949429880945612732324579545811522217451090436183947024769267258577998403351331223864000126468048936613153817189681052156576072573986424582841564007784369340765029928924736766836956581574176974521832278613790369498086432661784402335606929490485771827454657722006495698583094887385354501729528314223217835439189070364367963162540585675764629348096544169398171616557539354560486567108852787439561645561241580830379961671708402829120031931836775904806897147796608898205457737500286105662381163319527260301137784885679946267761317089547298603043630307584394787420927629263215734324896687696651541232118511239096234649945808414629580371583866071093122958459653480314999116169493131131839798736342227567393869691634286037453811642834173292858819862182495321675464747375931569284051261805969109014050359165529876873930353554866621139092807275619814301205417739804200092513078400816257701880772863510957455144728922778002682616020521468252446385647969425162979600575452736882605981653540092376830924316203753342882727751031808478310773505727003434132023475036937395837022638436301125010764437950169934955916063166011109158813637805677553148790105570569996552014402923761652999357424696040083025584273397037036118841317004664203478240704555910830404356466771300926437176550529573264455288140725502549671583757958513676828687981786918457419616080345778246040451652942780204898709667925977367998095543879028111315696060271830140042273698805172355864374751913154270247181497718049057935468100341725971326568163750032361285562176759463549129220972667753077871137685689999126028581743912572109203853678521025237796491822682338480823746722336606733837042428662137537360823980563139819279400562412497399529006428622196843814384939547879852095904652364839305521312207944188806430358752243715131458436286894530946164558155991546279588414633410634487845184437830434430943631460949870145769512091272574192338075829863498283045211448097359149655765350326615534129174165703488388827285651900008707291567952941736071453220757213123782809422299298454404468375496800543626863332519756993399562842001691833230788243695247754101029281693417721736443162397413250098166815435037090578538600662122276700505858420142453229636707484301866391178460185801103447914311780762338739440648760708975963786182479756627361455433563072066285632144696425059895690257791309097103311941306355326976200970926768266602012218424839029269521010509599737945267834618749021399006467981209062064514875863242744004151692741669938578454265475430819370844895365394636786460703816541110317688428968962520198226769454506676826833385840830381672116807895434812457686538823486986306017100523386501546642541297259115343591658245065134095562469447131041699175034491448910152067888083889662126943939769836040084685229579835441088411717786289822626299640856823889947808821985622387017745434073715711557412968222818735166258802935098503651654126028223289890494275383888894551036041542484886786443513246475245454605063360046613458487991659127499928115224775821600620212602723763932624816423103062362673449801246968061252936931191042694340241746077122429601117300621374337109265256609386505604175891901516328402894313598221935477141460360402592404222742813334674217592580901326096947654387557769930832505603801803064932559645399119147555120118040540447209769891801593164870965514783076010726457506697840611946360968754850397065088202844549547339419383965224001303275145830687398628168412545194167555033723304641307707766907439779283554922239271685419782741548884742775630250818600846846169126324019484739483982316457012388219626920613966044830191092972895365938044222287286267276273117008307852560049553520625598285595113839618670721230880939327159579869237966097076308782859126576060956251091373312375025786210662573711469969927366626572402320457328490186864630213520012721639933543110036537386271714521046746335949120324185775138371477989798104049829107895294995939402643248278871962614749283950073112244825786546563487764486463414654827935239688922835211147290585820919670113111888378893834310101205178102460291476070545347621294006302475674293913012392568237182392980256200587330618812707728764148336906743220554733513350661462485474391318197168102300189382682042338072508062566602922959233656665109200414989419728058566886533073733145045444331102542606114525082819791628506457741449374862857157233816542638990303559448382461908754109382356787083749908178641443465195322255611862243765729123313545190723143922444518122214790587101364353596887883064563723599312251971257526686018959748112265572043547141959421227140501367929899465980961030538343888106500849941927916141701775377473110488662724219824528164977098885504033515485963942654375384592137274877081437033283737970760540240108266207278001882067612209664656798529551563136309211321581580452404930929148903181172179530623486368736380364231500854033526791412609621968482637693042927185671344523988966290432523732689083140439079823275348173072277868420224330386472588977282681620320592101090008118932802083107064750835313181985172596199379145189210394421939248898844341162338939350943955026503637963656235749960289144249850905474935984956804494132440419142219398834178559581377930901125793462068780484246226373877025597870166193362436539587043273464365519073805200592722041700798206588898061926527790814288113817025541763932627105372991997358153321467541995749089303190092895301040401303342001908066462996239229640313552697706263066891901309710424722438077572072853855892556502082325273203577673933068668001245814650690582878569960761573931409155815710148513550364168458861576048634586643755112727676233889465005844994721490092549889617435929951667055357785724625081990517079318311389515111713255683484853456835837992685800676456827808983856641435178288182532401724808834820514312055158613616204048163463403915522346499911000481823306591761781197257617920437782268946404610073465697147312456782312496815244712182218277340914859423211895822209144626797797285452866082878870974525216472375937865090955181478514582020304646041328397432094152712845915686673570564446891290497209195374006302375783102529423228652641764303248857381401033444966711307471008324870441478905075021901869905970804884656229939368640630524427630763901001282786531354663770432270711993612870571500614466862839226501810706172986346722927796655477776514091841388923775293195891794076163071175231038068851539299960903639161966904875174797450360211322593270075159643044982969886341602522170636426857684660790340607143620258209241486273880823286010878991598892814503768732523590006271950529681230029741369288728408325370826559743397577770659658089072628033157631088957366183762063239894494170516854624350499143701182706559428358460907418265145705270153296221148179105745918634822151272828483938317644890839744223372484057132389892342473638526308648311718342486315706269896704198632241038405926772373808529123693605209676541823434089959734488010287264894293210349183751746196842533140790530587625844648417024851970633491630789858594884852006814487625184681758095024157266390965281074164640402130347677950489437359615845565052010745023049957025254144693948556541094814611567399403937535318700087635637710317613005838708036120962236933329290046827932910970945245963428611030132219948945633290022711844351642599602622481746158764570536763041956369233386328255296491263516960953872451175427773252416471327476625385134939083452425617877609253149498581387434665704276737846899862773507603016673682365233684611836782095715757798681110523979756092444697309059979901230075371226992616561754860230211740904536991029936864874823469723795911614110783131361499375379472123043311076201224988354823444569522810753156322762243823558235830661658081293769854641974658517973807209634443961642636977363984955887994074102058863140705851656610258255135590194692456129728686072432307374737050301864014296886770157826784464783190274333521115014053596518590468594503441009791915099714635421577022604336053746138001612293101347070459543585231444654066537100298159147483483061887832710618160184629918580626520023656630695722564231092172705190541201175087398075935941168901503339256913187041109862801587248898176905417105687142459942196385541694774229588801219665206206910355010231773876810712699794418975472520020951249542652657270046555147054786037531958246127242862679498043281519919839558865896042611700981163429378183744463255380048202991792198460775397193872917894472124495437014731668345222072348919310721835344784080901595849907393874888142937758817947230652276044082614972448953523910048272498093132853317852515971888484205789706746633941827255225987697943759479290383635932513347782956620258359967379912845567280391164233546694828552157768916937874520791565482303863719338756634485127365164374466648098515610159929752158051775256417473160414025517494209778301782744868483357890355849336248178222966624323948784720477245239736832683381814765040987862717035341414405037118792700412552137350433461596723795597552180546820541613535756429874992993817322039703228270477319642588037597292880595776309798765612310192937181265225949391490476076582903583603196247438309779419541162964060672056624288598189921357882046591652453970662127222621843731753815948270980616550876766406150861821478711288362274433664069794632659186101539322903463980761490072764290861130705354527263544830624196059236682191484596748213758548106059127261453782200465713613721871591567819300149200564990877476688968792444006396535678588450043577029236837200085329228508736940932295418334019573497679673721213421754352516736324922034321741224212758546726212426334083222742641466294883415907423768877072524934666593566213108489933722702219384966375977871457969241468568372055751142112152532910534109796985605645346533659318045363180064725103793097162517836318188519866853301448395989002650541966593726718856791673411010059236716928398608516970395164114537020975496178154806660933976403146263363542015250928061171939219584517941369844422884544268404749079834050541185549173121655741868612774583576828247866744452392204575129429290245424719528550662721689867299144047263189641697646003155150002107103742348147817553135203713817675374693438340521698772084497516384982364840076766969644780198206257638633658876235745062151908081925733499331141073264342606608850520005392979177476641524917311577662739260003289752311162718687460400306930001550922523531435865046705316772578898279731815088237648710965470795693847384797660141184333237884057785836028447716023670275501503856249992689123833601273571638327645192440477424138628981121591660223060086741267858558336448402268215631622826027635117249682935961420899956739705122212272444387118723346049853908857942602545451627918228171134642197065280917303927898975008152951863708260048117566979096392486214110395553096430035222861477138637818934949845305795478437430334162671292270556706930937246315345490299310166551005055796735663255149001086533629870086861335927319875628460348866914609487165889827419400367015383861417868889401108429298832034978739722398612745571900025862099654878917185143452802861749931624884981271829045382442991430944534984232089813676012213476392336545692387818620280557464329103539739537702466313845058248625208248269385383457717651696452934941570226414388481422446159139882645906506239004362170456548578461164276859659484203280003939455424388334492526657891101004741286146411159073222504857330683485332154083321972394294501018406952049987327505213819450789226329576014161982651034554725530043881335691429694760146157271825829288201271958148136249703170231138546795165357467532226614349693490588053567659508469222089782088077516942936409424361884217343793761791977311984385328088665042081404414263886069801726574257717711565731755778082700481384673091949915783949394806649732228146533116684055716457236477424713545167934961662810933098126006393148160667649414516025217458658021034837079467684661478238462625397227180046221871784941839356929510975045725646955160270987707555636687682508716177466918068159950929479347807230250308770782180850093076058789654040204006826152763969947360464300696343795831653677772311284866541997987208297197759908447571728230735807603581888580965737344334287596682585712569312767169398194457810851646822488136838204515346278502342307840290082759894013942490338345752952145341843898850684550189033979498073340776756063773682357029470662057117468176729212970569321854109387428513177259433697654186395385231792518184173625080392179201814095465400773460295025362796034058459404675505590230549479438613152370079547381548465897782058521712531402382339044842921726699459535609549532660657285132367734436513124900331717603332289767469431886897098371225110017498873390864534917414491408214239990290859715975090091961842724543960547076216143943827898890711288980041782975454932198681875899519183478514955504091984636040120748915797349219783757208722872047918914555734189617606475363152235950515076723537322885570922892886858463203349108402055856159830798681194987275929084656469180705661302074537752093945683495485244886142505396085490137730632056573087139925119110328736906748749188844881114999436772132518941727252932600330508435591599831916839462862786692985896586041081215153200552106905272197078922699720422569189726832039153402363027569260007674246233731459596053207890681184229057438567265505650172504951624823010205059334918008176197152322900027895700384872506108574204006080692109231756843530553117311876783686759474060082984574005819013766743410075517892862955322410246522702215279641420642562854211631129121231360707362189532343256378029437512793095552384142678904584861683969534826266810019872095757218043159360106763860797332704045751599845243710322145440456500748023951707374175706332064954783890472005642097843191958007251897231149968362260952066760442374351594032581278558560122519710983248238184721596283229205729452968156372023173824426360481212555214881058554443360748684948236941192299562849222158072675106658310287562670988742690142528011637902368157328028631591846238216338673485079635448490775048713343582928321520866232378375665910533188458581527005975060021664363686754626934272900396352779319395340568148854548870510997199970223571106021441931205755365343555644120338409404995485392311747218986433998401461504196365912631715490608865050028376180583382270521290545489080704701567433639475623934102825362970708189661495599951556582097131684548912125435552958624531352413513875453813256772544643159929712493472163740971652362647864694493564899904236167326953914557410921483470635253776190102255600122450492373397507200614863853017258161212414875683025401541738545492528748037516362250643018866547283895703412663495723519334669219456160308588749698404511592650995374490883749421126725744352886822367025666621031450338260439446560361055205575961523848954223880088202747763394069069623223165343898372549205284651022515349838521529310952274313420398527023303682315335847847608909831765557099210522939137949045874374976728658188527786389931471182490586884388946139083705213655668816955596449145236414468277439553150097080214873505060090527272653637552362146181903422483682814593615897141173698654144355118883341508649887430817103791375906884548262638829503132123541652409911932659525692397560684000167781802744531226784910407349811452730486921562799284298780233680632633581581416154608170992121574871159754770870267767636519430086808125892385807211082199730806621416660858928935149472551247014072172269573632618982221183795463482394381094705945048924624394509675465489206763876255539374914163272837273555266140364935010515609962412137195624108248917256415017972865077559517653492314018204500187018934790748125325166231530770361420822273057842749278010559877855429298194095421671746081728769214298720587283622805206744048715085324232338787476922945083331596616149500465667882451080721186742989236776089038563208238391301725826056856778952342838417054849865837521992816051713483644479846862639381496137886412190754583406834256857651784873525570361187167907320075142829779297802137643739247029220667519837303585312465969924537467036377237346855319730877698814448141064777502677139080944901408362356613736015971113909849159372586603003989157753469031629329218160415729503262451309067194819547601578196770952990646836200114036290016891811057540673461878571522215060104150530570093908554994877005422238761615358981715680602641683947423224080963710464322841578809519909647271469406376595357538018860839367849191660533435545886445690610625961200394366518196316625534609759146920952743505973613634247124099309668675551700269091188076650504959254219742657860669503226667725132413533346657185532709958745140541481842182673872280821432219132048183686269505792102873711354029218559814308294885301389371046724473594118443694842880847469007373326027478432385597486404698148511235778519948332376517777756084148471074831730762046090878869739499340920697854504855094908191099218998432161552695785634616307400262767151731141018078808051108348209091241256274126728102149271819595833504579523177373197710733422278668834422590394062637539369277987918456825852272172026587197433340272258249215098059315786965606388789279694961521674912328649159124260818019708141502242741363753309034571619641366458779102644188514744491752215718432653341230405949929795968667733792612023138919111725981568100829743026585556751213598902588839353638354155971328719545304736277899698063450405183857236840787635287636672341887205703227905468674636370918685988307415153810257651202713819583530548618346927761978270125786178334889923583809832278261587068835243723524344897502866339236852586056690906220845748076416773330306143311450934172714441872980541345431136721450114697509734549461532136503733511587938929807512210961042634310077536397583444957063828938516755704382708361284022647442746157082668200924991327396049542612475718842711181284497331807261478749910870465822188792065633377742046575850171623896062436651154777804544441253097010245457750163903979203677845428517280863696393338244553888030406754195852204971453853836706010713222890661782679693413100568829770593729663375970862248389166157916474866499648830495979843415356059704247633821692257920117576169111157850172225897828235402097119014759465605195526296939290486480817285081125567160603891275662857310366942473482140772696109867252843650336114394855198834550678726225899172448962340573486807425779735265862385474004524681361778069731560732922032624778003926107157670728931338018547405389236420095720615157472005811727389191256218808726000835331699090891583526870285124731521938000942435804185310564809790185725310714801990935160976865482786433516274674918128457329791638663321327448650632042317575279782176264006249010349978467946922250424145761524301845265238299089720510161177223384361888281301247779145018181669058922424769114309184317519059536186203997202331482927163536565442019287093972882424517214864791171881704616018615142136969156985994547288734307921536141209873603427652600908357029282640253106902726272868636586110533173499684687254309430319178215556702411124385740433767631929510706813025604545929233671563288229900661896212375842952118519715370783843721284796629995812791365259442049526402592149708669487047390651550055717851500149790224108628346313722692653618542868440146591882707824032463068729779074158576397227638899887517013023758340842366245746655783160639066274908853420149469604964715765865064338943410466520332145784063219844987129984301593168937403129473132643365964900865350288104231614001194765944255278380972535641254696654852620594284416019992266795192433457907428114855508595736803648101473570534494172599895964242930907947937943759836057557304217531457835621106932478762753726033597580875949844212222024648025547635943770803192787403879468612596519626596441403437544260013836262587973936197063943128337523371929888962833459429867990252416789004989406485945526586307616607373748650811548595886865148676393138337109796217244014419749464673312872351540571921169965219765339854128456604414694093050536362560910019838011572607820146019724141806049220372451431184371944406844334125978189154366710644102174405796583057876706240077631780605740308334692071002942171541081720881588722435438603335826357255359460389674444313004809695680731014634056713865476993512655089254038276250780957058418831537504118230164162955152948561090056420063903181472207441203512501353451562807210810901377736734422472717390036006756019986342822441778005840109743021799297190241872428022167553286720841270617379852319406263242365993596208111977642962880710843005926633869662613295978026027585742227441628502311044038901052365201139736068223592777728008882648315091492476880833057467670404056612853894208108958170148117277198867396066340304369333141451089190861347424678420639350364509611087110173074184082027340880940733082014535796367462499561983684116092074496849424325657427008010959802634538717823032739021309448524844529424138309050113363960650442980754877025835106424104597775421507341738348629809365853186595748385271949705025587553202617844651432655373114796169519835016576403153151433775859396384473818244187391828748851424495482472126911651660045474252871024553457889033826249306266269585240381695721814331889680789783669692158423956061032824466307669799498606893841435321116747587497658282845136952669799169238407012724473869017579007091807568196919667891945267873708936173157379013409487320598663287786332630085483954904691696121077867414203668032365369970498081683109604293976849258727413836280013639922967638897100728854673202645652087762161694275456412931165589600763444424653547120718691096207482579349208519418122237432363458701755647291742592467061725482783128939825464539762341198366972157990384750985077098637975488135378974910218245386757884230998006323831508034993186434416317227067530989352174883585403523274506993951045446562401054924723464116758808018019191157923281805679408495303791234042643783393770109024980313369156890752803376522857552044733751218390645942885091128613227270068204601971349924353525879846496838692026689873792049733643902925414871709459802117269425006882617617550605834443897092015995904154236833241195064105415527316503790594384700274580081241916570621417111984579539033326190302959232643710174916829914633073570124601197875822487033516637033831442535256698485463846813284518019060620743646818657939151704029910976001856797590527433524939103586850087995772432219710542462371910942049844297852998140909584448600300452655078069263833482231756875888851314901243889034454407954958695421758803961619313055505219539765787113765250272835155605966429218624663820948948163517958568771148382834807699664726151720864120053833484806096200272338844961199427520830470102248824709588907846187668672732891586008888268177716280535771709839511551808774942180496183328159887386748307803396165142299676120081280664462675734080145855402619144796934827334618058774701660365148079610205147080239371147667158433635171238324202925317841119338974703307435379687621711455835603925662566899292186912196622853120484283978271570759447779439179672185306353019961648892748358684046796810674113452125048462152747823209794864366042065659296896659256239254456885798572438200950963427182637493198665024690915208005401248715280310255809136106491260146777929250497281796342921470037871934330610882143946117393728530114083671381561235349907145152275698561964385692050332068316688008739593940359068195058327493679606720389915061406118305679877580615021957732190924991092638255649382726595469932874054941841820718188940786263219742351634751039790673263490344594003691234685769038890805046195621817132751275421695017034833216343317288142260485301382336450766409108527190724598554967487471604801000722406936103220964801829918633074602260190861580191345325437513379072506364835951680480118056971758801234137532520136071241467109203181464627770606759829866355657212699874580527498490933110646879429029610395690681642523531222591124660554938787684074946870907615006807583816487907121893786681117015686493918074617110225349295576835713941774161782529442250977062786075993331582047866438277163810245004763361170010906235672479857591400811534182320107860128932872054234545925177093394262106024952977995242529468896924373355217035145173304865897630327616104420425705752330252913180650340358512014250861166107567371557931516511799000019459177064148098727027507480804496028287540592452355688171233406037489097256995654137637876310398681649469322176677043812910149750011276432823085085380909343406754046638215662922471595804858283216291373707381041318906986681598263248267951856401964288102532643726634142593800768767211539481459662204204035082645478617754323183968493205707203348710017518732193531275580490088063707973366279735545180951759340575172726099595361210901239257469436828975512912779797944725467983828278079973103963247989638475632935737153537800881670225299962115384994803939373113026268498764993095648247021736159655420520314718435928756784783841385310134582576272391612585023405324944773150724315508755354078120369862864660110514127916448932669526720115722154935131167262722634129560952079662805707303422476102317530873564943463360208478661815371939503341166993756058010379410980478159024506315931969104487205844601794838505016716199190623880955342305225414311061849597317295597595479598745575987323426884840429340630593082695072051482230547476753080134703562013511183114516448027786893359649164523702387170885556820723441157423723090717265360780389059675405504945125795690273614137831466557862298873425754281114705433263806227146036876266555256881184776746474356991587299682757163565459881678807379070351778410290457108649612514080530728529695598864049197760201499806807422581893891715529692410548618349393836666315580203203502289457195647682704598428067925462005926976501070004846450170862520825320082283484156702417296794302146865494683656138623044051438376077802102280554292861635036213871786889706902894785317939730488772168308997427746647611634566026012343933478812000749310433601734021733692805861105384112014914882094264953579675486533885691017834953920777823144745127690627540809382956126258239492752448951747433919821298329896799688840592265655648110417457087595874572264826178873910257105132209848023922538128840035605090661775798684838386029194873627910728463097748448388480369386560562489594115209897452006088744052371178743028938196155066853399045734899324257407731961782495052096430517192167878777257350548294429574222657342741262263343961034103629614694460173247006890612723244432586972671886329216547214546886502877112220186752978697475924562093334689532233009927131093076036160132088276980390077309272472446307024118560882764617549910349639701701877032182850626910771743308740067262384744750858553358342525170810189070163971848431139970090788273586767774121265800207520334198064113097663155688671042019253533238485732420802708466447755686823520549207624391578818786790172083916058522625289312351621283364721069535862738029824672996096963550184157938936918701484614731761109642472833069962264070587962040116188451140790144459414653405911040814155967074542132828098637699762844883139428569789317055687944402362905215478248816073418267644846637774867477486181967582537333468127698165318848979798942366038582473305615931257218104428537722051914413346872498985992267614427076364073925306137645684483695198875243074345823854087028962737187992158715404379165520404562455042844923476613663301595672535471435081488637573225646970936414448751721942495793615281906295229899510217644695467701151830968700816503982825495277151562112878712680830209336326019438696746607799103058906687165080397617954316784788242442279898438488390560454444468049436511973154806423269842061550700762390633447024182316320205957220163914887795644955945788201995236601235640788087150579812155690040364434194289566241829986815569396536252114404040155763403257427874147247773476858688420987261522782151230773117770174598464449115215753791294906353806686567831793589764329819147196244596831042361586943882914861297171515686144358263618506192943947234758448925410995011935112899751705928315737753134743608171598943087184009832078843394362894595181802335453682945672083743093413835860097127579956693804396590874711218641871208750633189989638042154214448735051804957718772264009360233627904779514537555626928529396184481705190661118108198059090633777105980161707378117989483901132297663705758544172712589969927635149025184869102462803894274574461891236547807687176617946180104818395494241188200333323636409539129798117822516062699478692999968997395334397932315391419066255457508402497151118640278632780526239941230527921872297045278157162277980588929083590186132148400549338258800866616092552162115365617051823391832364496720141042610315000223114907379095403576942884429916155234604869824396974639630257832082356793875971749274274767651663009793194980119501460666945173079113476683455148632432325698421797348126310517597943979712577407918955624409782377622355730483699252735335203732403286142609020807331708909267309532736159587644419417366258476485526652156450789493106410015021608412181171769157600756156543591988479411591119689180686139894311725318224551514751331699172662519370126001504537961000631980939729191869991318102015986399161114069628174241353412721243603134983135168737285199051324460877465641928959072031118492665919654114919164145475089371110996719211960418958035344236014292304530980187698626965265211987741383180777282615231637931149337169533472601348863515923778115403294541844447968717687166554196801052883351144161467443681374691868705636233355988605528126681549753243326384691007748226203968518361339041244627514665508896400174795441140155290056618160158336059800999832909319926599310097676333042456367869688366437215887986009067455846586727202031268049455786931188163215916098596863479985382158333766107468516211398221532583778100589906374000001779508296528133012781115921573385927258506107301056114891313186237913486246881294650349281467569091013262206026985704852906369431725888518002209098797402369460631091691094874201907776570592980149230723494947490362541797206418518152829384885102609153333638997982292588542198624270831584534001143881711453683618902524394666708637983111809082697315640724896609859062567325183232875003271789023358770567187570875650763435591147077679981318484429701954977867397678463600792173679802630802135359133510613654060761111661787794171895909386134369728221913807116430708678709684519219352853459190119101714375687227191529671353192096820388137860916440911037559220431031406438720295270270878537844990690516388619286460293627644192976994339224971756992545529274096835474558412234582425474569274883460205755906249565547694335589526922058589938690694001397668598526260493835614848943909723439232525591113683064457946464855833932986662481474564340301250493966448048503168755763176576260227141962192247406254918609657855209347533138275128909587165937378008394275892581056654368315763535478066485641468901685736035821452517157727512134562072888747318913652994394427464384405010601332234800542821747480648267689373605552564327235417813338561626439321770737749623021268716618204634239993337405231319864007487947829433457013473426432024011503960052252463227878052386248624183443153409609509393181150064918360808915560599916608882858024772402274535158303977056823291275125246349265595472271426909205449872565414186674015710895541599075437353947154532946261501843225618901996271865113570134887270030845870276123185143872956240563117074405441282129771039413110405823372706009109944990614883491649190582306269914094897394073622978819570197389906342978007808486527776541764021050992002172651572773297959312659826145017077686065983550144535648967910645830399118699527286564107149213996980865103305071598483704629463375626155746321364274362181944457575849437246235572559886345469467713595046905493651766714788767242752968895703581771940162656676262174537534966859149056789790414430847022860495934859226625914381881309651841497913959204026591784864429606667797720755762464392541831195812935359334304976041628053270762098166315131790944753447946056703098411343475416217877150274426164330572857298329193161191925232549219934898681929723232201701000661728165481747981405827649378626898271798654689545498266948445514508811608710546281311852886279392506037056256139473378122595950432913605193551246454338917441685523736139028676327822540235770132295197558558034763472536388108160429534088113669784146727572216801336703388683994818226217326749782195259309700969408560189078056109311924784849435771743088742140559255120065608629247596947700934160543828866729974533514980721119245951640416990746734302017176539738088175401644914243480706063920328229555413865522406438746715890807649980431090797201596397005232243369480765378287903799234557763504192567854032638015835551226779277412318785369979768134739626322572109184814134371866505935337892199744285960924433188412367047821678095935681135297150198932853511247687981654362897606033584192919846185340656123806023033595924660719103112222997954727042576870621786113389158192400036821729881178417740162000275897913040220840557912129267300670084494754037642227506994758574374825481996763790645965399502746525982636937621944963986426145742894453854379872044613153375508092307634791265417302528852229978500653822268631597225699780052693317838678176760726588659083489807718328427264908294721035414863391460927551030154020078953413799935755054465380860175868632271116738590435382292637187913896509480591309653619720346173367917465760646749912565752899721669377327956574607704972011736512681438642265761445271734473903384008679348220186023497995771055949205910077149953264206417306396240830002802890775408221315210042608700742323091884030660305732650844340514118633907654282619839169450549522861931256397665529439775391256847704439510874101344451042883388081836811813332451358286304242162200527549205044180617989856437776642313800414341075471901576220574304714034034026973968178652167497597683817311542034287522365588138070612014292181064694973319722590596387644190198773612538578445039798990280309608402234128837466958521774088868869097264938329306862944560525545640886424611550253169347405224447690891313701278420588383267446426063561209125960470777658889159110467042567645899035749480732316079565636343950708565700286115935568804201500721712365942387649374824987796543896146367932198197609942330496648381926179074768833124831202071841269444190618384816262679532958383831471110175651900731773332026033675560861685411115377234015693611514213763544287591316737127641371818472551207448760101619978686198641919039737070980015082793068887435616914399484875776125659745951450190337159674222046990193078817621457592833829757455026437495831941642972750161711165602752629449238917219728021232757694961146194190980047970117525914238757378382884017254368567104206717290124213042108103552752300704539498113659255183972625558444565956417566059798130069197274561549033174504266733048517084425405673993083604148092756070441100367857746258125697055556139409739546779567563149659510085314392093354330113359975166772545493763664188145855065660079446867181001193275726225246090211117396098466406972009401066213365320185716713404447877543925384982731695525926048201033301483495067541640131489931630216547111120024349342516551987662521315750868944246242060791479813705190134746363656830908357861972029289290166562937268865350358626757822838828521505940401082998101090102722245642704315195497322507845296918786376424137664577967961538772989735621933950266479030831316066455404998553812125705519917866837961320840098763701507662920748139511543318046458192761269198629546852804348610349802840960209289214054996539588165165317466950376526297483767295189165157758395908932210427445903125751036538168843497598344935500955382047808156248037561297011662815004776358975574000288355392949221375070325805428799365304721559299044020163299603151597638843769841797405524889751928051541145340005238228247621837019431416136048199598751573636436781619941064614530966547110201655362696047073383079376710302107947450016516739950303792395024568700035790777017157687661654514369402388880803797587916517104757549132795062673748776761683132027383858410238628444557904500521101512568915423980961752693495422453469958093267966190091552351835273071830590055706399904346125162356645457426270765282498309360175143932206345449039140792131946371446111160083875969992641555926159862180995806302697552802779870405011184780433233819308778678607894231065967072383188549448782387652725416058710047503036429330116042189011318884713355502533148692673391676800783225232097613644339371989918796730472367190580613060247491551085576941668721701557040543932522366418138728872201043958938619440771668462249877077058843658018891593751873663846049748998082383085014639362042261786014457512562461090910636108573474036304101675226460663560845750112180369599521836737631201733055749377503808308046370796607097276311704682216696807006402619112829342702542361535597784865300298772326467446976056121269929108092923833592484710077771982564302888642755653382510881838968140120038098732130836941327541670208321896033253180928343320636718907537892950859495021739356463611415104174181945899910417764126026519947721193336969509960597684501733971987127901164807422150312081678535266706695575951185896982887367087030945804900948989380109962585149415912467089982195208624085155551881819850819986845060686308395147217838345925916729796330306189723240704300553637652371352510082049516609615142167944952860078214121053614236055957148112307597086849479836994199691501950829467318873360558327432750195307269061371480149047347666867190792368782425009174532830929538656345508546490652067787560974633801910084891079538894322130560729520889978620605470698611555683724526590122029152238612866575480149587909533346358050417092375465585801676657956986624718086697161777106655468217847932970158644158236119112822290611441681576372011293209822360971881082670477668421496582332661065130571528195682020679798954348579110306939663615821370812761538067432185465113355075405299796141918076861382129862591295576284474482030749670778472119312446073768187682924897279190819497866306365072849771157813103912234811685143617186863017944556942636632691426406241752252352398954194587564005904648104804063763333384939561611182947222384741935649210962039997456030047377843190514759731553805631985939166437931687116042178904771665614006685531828395461492465762929240744828805926593306334337559823671596303816337070623579455802379271432151846518783850819763213092017413352611788294490346471972363415117396558869945293804562548643097874607091481914637170438540156865763529845770031464302126216414952669777649756262784446084218739980732195925342084857445430040680876362203542652371231940195669370511394248393264019626585389076027245788483234873590056328640177303098770309289233321944893669596661958017686857974437578095797646802743005401839506698272579163032944723089663409397874371816955393846326663737216372883024806215158610557934622808430610062425702324525015756999082049383501861872168781126536544237018066119105317811184864130812748254357079930131097546262806568901039887517299696557540058977840704366372646146673023418525602264649394479242946052777135199487937702964234955080484044737923386665163460277336053468526877404200898856570023266012060906265567054102444635927352579776271248467314445287768522876641907374871503006313731819935803226534333886763427957663653018395356631850379327404684290958538107948017440355011137041995149773212728391112350569918986571976407422157008127351597620966882644716222858870800780593170055832536397693124250914424229035431929485404694168086465094118392076533337863099732230193543801539898697685821026158905476223135554015737540259399705886323156745032062464175948719703248386522099556129330281066823605723057982860944026544856672888441834986016176337841183894179280261152255215090090173850630329904195862188146933747186387283942200043617643542949190834340480810014971460209915579817291686151481710277483166654830943133939782901350107956912169989412738696772081917134196520973166089247628717322650344524072825575235180248360558868354234458756739526394264039019290733484707091625751922695300163185496821140453071106799793531218540285406873458613580077105508618949732294366993135325284519553181175297266280943361478698751545532357590932560109947707296562673834354808959585609883333936330599692637592766388804273406217618108514564210182154357969387666189288532238717119385825422898156759699995311754304900097794750494496211356346658184612095719320758021073702430911239418039186188220484001544819563609548766400756960628585950589694385212109031227513826782599370935164016451598596379193836528114165806379609604270507012443829503901811906074074982356516629210169254546111525009675767701362112291785805730102547875865234614466523029554139771188495574488008668320888168115399174427000815355991277993097825243297274843744860902744041082297043814237029297454679551948837530813054252272393211483731263680518576352131053587348100938085183708567993831349512780514863730465059940036869201153550006963370913173101433138883676676825558274332252677956099976629218453035031602159500477473371326795799018275924557735220474916803562402158608075238515829177467002525007249802850141772489592384396998745067439195053425790385980185581013953548829349216182367248207339453609743864316848585734760721767281580712327276839960209493310672463112482904384209506791897528963304231675940480582124240877762773267751709399902709420463887702162881279353131002986582527085282116966677089541851388393423988049090853537697702703364069097673676989437125995385992542499591371447790680230908053477483276483121466062184463454351523595055326186240120692861829590378805123639697479546946671616159989001335314860603322436739276089957363547955480966801372560481223396288243286771165301854871360879219927553240642199693300588782776260226394409328155561338420490506328910909251420874069635417502373478992761548309958277246194084206163298945340177338129057590567853849946635626839004202191338958548409724600678893500425528170860424649291379457259193241091924530986663025368201166065103222329236441358909057837813980629699722370313294497478820715963575393796344191069683546060312621856536919077229941532610587278700882397276340126803468187422008501449328423284060450113458399998460197060061556083842129928845033762645341218473261854638872547320712944837914287122928366144003473297085298306327126999605727832801702179146261338808626992353955055503083197952598112002981418605971319026050124361674495412493047937398364905017300992990622561741381758277647485963198081481151019348995961522889807056919011883713724800367196028631054206610020551779331057759372612926963306049219913166510006727259194356240343442505355994024651233864808593254645371652614848257587042893114245097568527043345000809547609107108099335624377110420681631502691535343747125994253992647311835643664196387529513057609228577535559092387619493730117139614030721577617752468361401538108363207840821671656783333748238054897215716993920198713752009273272629646740555061073622405929564815321478837213088496507451792004018388744133937482673222585389073033679885967183993998259111926691926604713520540559537251753755030592459120207810834955870251367591318970794249325310630651955869089880220273920992869866845966585197861083931870974119142125204147220879529607574903864593143245142952521986259487291401455582184181769645818063094514798872228684942108724178055190735352623384618545514175075336222237711262779444153324687503135480973180512167567936889142668181418772327622821912230942842836084795366196180846851509503768754044443052471971035388946925734972530714362888476601497320428636001387734587090635935372408590255360499672130615222171602159421331715743610143949242494978638096818261246700992221958837388051495011323504426515757214496328503515751321044820499974503971562607511148538050560320841536718473141804902222291971260663597834181864607939324256949456537105123281601656652749693690022929189940087252728339075273683853146735073063438468447185296205763384871503225676273475622627354084167255821423233616662515326721570951879866295959593696302582204260600915978103703628445129342721090665809706714601024744561728731776672291552286991996103597492814720359441009405878603537822526052247790862781548030370826701218153141393223006504370256542990528493812911500110804549947392053561057024369795918253636929115552744044621057855657297666491067483747662211791082991827336347502925560883039430790381488432371769278014803787331686318954181093601440722956826282246095368257484470497703338799660674638009796489800322033902271842822408121897220212004113376793554763529173092828235434137145732802287555326946523252872078235391738290675873119637396880754082669623710913574329346269406831180746373398469626839904497536621251033762158588162528559136652259909253082354435878847901942544829637449100502681027720842979479835544776588637335671617057016167106401032719258141377363904221044785689765653490467318655851225761497262859485870850900475889549489063422445488440913941001871661530514902937269361450950604759322846140301099742412449142754183295372876559145286257080954882263156885420460163807927172533730373318105839352133056487701207841531869201827857425314553883986887279684493757020162639803471148662819453521168202870903515183134705762961286340157043469279514575274702967329857170748676917315747411351386773018190816611480602050204987159655193696650608160442134788952106091736214279890736104896151569202913956398537495697632145428602345600041356820001061671117011944149078698965508780403123937917245533038135462827309154448061871818543865942942476927916932916624946077646143929729239095460633709626956579888482810900760961357566612866244970966138288983331869246060340113618621661331184737459370745673135376492505555594473235358373726265760093486026279579528745789034378680126942597461829968742099404267868895106355635043465623911336823340632019227553485706800001717532888995520110698709716404194371122746875799842704551984166409790351536058859459610202019964363735069395642283656285475790502976774413014442897037773867729865579941461033044457466058359036414533585096086084607517725251627219983033157055772943271086159573978348654800713864766762706260386912896279150585114650663595693518727595487935994713547252931039356265251208697584169799133926469088934958298178846702092118024266392062006872521312454949626787057782231321115363146383568430875527781384353417412686329276299629578908365781904010531664918871007225681401884787002323300541177808944043138085344068105908094629719244458320582368665485726223844415444531175634347539770005061625010581086744517923781383730530615065557787448469356213357421654393797537026806399439974306073536473582338241782017778661791297506412861249888004303292936976458021642185234659728537141709958415355600126065366128114173271399747430302200413788801967917542367646568453412141887517695082062797095245970980940565596860029251446646068363150054794132582999354222342042308241109425466900856317319385851846974487316547398056245473177848996528436686481188221789123223992167230819285552070593024421737407358066986443519849141261532841398408114858769570409305313298444964304120560297108614348385572175023491034520491525503015994934983405539194516312255613221969302060556903736938876022729923766656871029962593991193161772831499339222969443045381076514573841820985552154844685570138699108098324076466614797763368111975827742143729118357426189403009747708612992667150646783274838737829415838386764969810277362624693190077831147714132302262439935724803650966844084463362041517511600167585795752451732113347681682008550013272927151833508835903485322874854339813739442925692423408806335100873012275430938384236963589645978531776871133962402943337557759260000423138327290672800690214963590417839919989514770130822751961933099322160067467651008758482255118189160136132950196341135806388840022556776684290904924237028903708041671090582929292731722938589950039433597168124154676205225435372394997129121525797475039529872504074678401910163173026950747735816343329692580850410854736585891925827223443584107725390525854393432452895817789356322285312593944884503676489763704717617055669509336602617593512747004304907214239428925568296186797833685990814063307984020156467194372146016336547315309269360029554072034459432855197883857538444685102321575705042743880429393409348744368636733986208941624516719094143808711689914042873429876549878685576665646208747650960135980483266281019587366747144183426712190568005785573716232705536274892401396820417140741638448184474837603629713657894886970487008305453101062087579312337705636789678098622675079824897706566672253251771165397403307193040828174386807014276427612838740036289366486571800348880344336264739996044959975336564078228968782992936506085524448373841999683245971203948407039849836127208566620170179446186951793471947194711604845188974190034488080424746137304223284361540529496447027458524276213416158349977269534891025997204517167762189302221050171976293276752388559352765729800125635548551326348226706432421785911460986218002195680474111113405633781028478668590939029030188736647607148175596832707901497597853621752729814833450777119343538939324197603524473120595011113248472618619075274527163863358990882025566163330985801503797653305510272117159273186442739153116464640259867841939411976298419635942706272589426284777983254373668821514382325966333952243929463912901976968736029120381085534278061613364445199965200590158571852807936289282326385789053482536123719262271597868078748181808568799280300918785676312522680935142461780326899493076996224158689294033475598695550508177288288981349058261912799673368110249694077032103098341713206221936747242195201459499691283905032075690526163221828913812057275318698168144116441553480978755130756563551022433961070951394567105475653381762232261251037337895202444178367491711632893437783215558236125550104570883208214525313662003456519243616371728256648079301765506845907376821187552946826882394177814777995502855465767557660395505118262846445724224046233862626552915076528790932613089137869207713142074900562388503028164261657311219169020859264892552576249116965034850102085249438046107382273762374210902760082719007294820776992579006957096712823970922458511562726536376772019492872056381251435087181407176167524585570624904005656135807152526428324805846403510834421094292514799556022772414058578653484397013637839730971380651085891517163862274036683060112037345411132904164417640321519384097404650854186494348034157134961028542299329832354561064071888332560246036792880050086114706505609763777293416445460185987555000183991572443387837971551161901752140191255092086360185519036602369669080315437383281666942535317517142423845948974652738954129943063543072876459280755649986920314634450315449705331178642638841298823944328863910171718268917827226177141283873687411945695042153532478709672453878112283087567954158610170258312643102409812799877051401970150573207516497361405380206304732951218898832236446024916430323780909333651793510274631520717823693428438877840079100527640622716883767363913081229077686001755649803147887844007224967837447414407870133441532531291118875745366092483294730395898882141379423169466216807743703869948938137137345519092817088815168127736229267975048034109995038696729229551634183571481515872353856084346023312606362502107852541464800154408046520780391660713350519629629983386856540215072608482446759784222191911487898100010526541825416585407863627684149167503690043430127004943070239139301175627221631436950533814524852086749960224992074265958464020855213454722887489371432925893088490949634254262337879884758590542731108959612495846938934617727204297063391086515644878600369447614366653063762504955955996570039968177944239250660665162396881836327384020015639758737295029978054218994248370769834139222707086042322399184740713078504517730287825208560982407482127763467966728140428983020148260727595753316402184624567213649308368550199028270999815525251450310189363081693464094417098393592198557735913377993597074859546795061734214507786485556800588257087551262682385563389227603239112157922303334976306953813754614162388083093150546568302025645178457349986044912865190347779811680787033497145308062085400873175812069336979236440956061709281949508562136829037550182842942931665330699715715094593234677421428734801955356329934985963832746138676667230397668867312070829033333374522823766523194929258438251736970479402550864896492620575701287651332631225016556325849610169013783382600227488034158696816408519114885707387757228578633785807201570737564764973891082508313070441927932772192954820737783802044256476485866240811799884274970178143608874466686111542813821078011534886663998097184632255218132469049306706829376248517670467349404800016617538048633992096345486338686804300151199285791340886977368967063434654096001139061009923367492018105595983234609107278486491492834873623651271584122534355961599386622472252407215818529302562460818241735037144871422837108094797704485014028361493503307651124070896151427834855560940462450064983978641720300855227623718339520030182678102075969247497190069587185010350967479668978909013806366626638589079307777781676989275971400811452419779694615774382637516898184757509372273852761595102806470504073359519007834773591953610185369094680609114371752056277163441286712911382150600449169926483626274409325144497723065692103952516677070681442299750710268092422044630930510474172199819956166047107192750893045470892785465783613346446416330739226114121363925931926951469578397227301669442704415309401255382789100628499326971902948245900602126933716144474546589443766682017192853876461589567352410247877866099908894265010355164524514851551978395050455824363844920898733773937865957880614355185113892206584721708892682663832614050100014340312909804378820566055391883112828178861873607620414591594429891628183779554045630555349285620626396879912742132751961755064657928366341325262644038794796436173775968226028781767426510948438383389699264749180992558284274983550496227832210914348409622940827249100949339087758022129156655259960844334103606237198731617378728256997255091661346887166366952606440066998614017988524011672298690976863970925758340034480268919056411015182023652841257735148870754139710309460301305223116985027545967309297963213028087949978063991223984603659434635600468922875075260942656234216217901720094800658751407665032946135718525982006042663332235993816660255158695894672200574095136930979327205502660804287148578783134397141544519258783624440191818794587608174829122783444395895494602134669970116401376067421667555403492331921326081504329235631193194436347005913603606887586664997695091582801608002567168948183549293801843431385532470653233492131649286392836741188971488507844752539307951281576197008703709073407012214280045546123405068731882496744222562935665099320017362499307357700559200636555799717954112229860234173298928282851042036536302800806720425747979183205709005711980556900071838911342178825372848619823641246041813138803095751399014403782821979680713321244870680917452713657847796308673297765390555180819195422822809992198349172554237195730847232922417924294835846806686179026142600793402247078744380926765141175183043784940294470978724289575211952544499331529507983963819439973205912062909526469724065120720176525682971009809045925588786055352756963948297745433759453527721916287323355329036682060139461863328074547450564897595488280085728636537144302292658249292609733025958584563955830059283873051459518384235364122805627404251756522814269374556211302499905287941284167675371816842155304828676197930447138132526242982897134209603465949126849475862982445243510589285775391462714644846776209305616912599313604009054731028720727931331103763407979710237238122165077027692121748376490749054536474679229926962446636288681110412515299604079266734218670453869875617866212649551802203213827163216730027819656962028670080922661085496523046076887713523189104236187664634109892913778849522090958097847260775111081729904877075064556473066816811133416247410546218041180949958295763291579099867997344058802199444574105842992543902258129749850790554751924048087247162019808583822469595228091315699633683749607424147182519808607573331617269529486728227503170653693598698230664492089132365621869821609984187707827503617782814825786406285452705504300434136940183063434338110658328575610232985063431830609942269571167014576554946091700370364788919432469942409003617843676451559870164282055831020206613024715258336598593080407436054190379259262555871319705543741814082268751985043613921809021220016742367606600836812897574772699653154796651846161367632635297845282866965067401795674522074728658562724271935744365391156685413298951710099829860368143060836182018196545429445223203986984364171344958718409177635438424620238153374997999789127721306357231075342388998784955901249554143601275091378047946292420112666439770514767543343209535356396168478081738985791863870686914865736743796972640330352520118080797244188355547957786938512845310440130696057331101814745256911636095834165457871073969812771461127148173833036572365820835867893162301371600674879604657271481398673335654989894436798977854456156593949434177513302752780993268233726820092832953939388560991236138658732708160497672042356560465718291843044422085619141812205232787120292819422109656152796857524647032378616434398995875968132506701183709397823914255684763540860658993577627922228670623529741220678809234598180194560239054185736474759597291391754573790736489801166919790943439730719089513699694757184383461014299987586956391730858499945004088809650275065186919088193253972951843547454614879958689033941377975250196674627995334695457496312581274878461920037315394765312787776397151022103831311965267109585038481094288878127460475610038278663523648086190997131807595442377711276423375822634184293324903389495261845553059142250067528322711322936714400628015991210697771756044189102684637163819868700800432458152320686630340067625638331694077831769518846415728954409841777331718093878638730062597489809489781424674822777496262605365426038030475592523702913493304408122612659162955367941385849451777712523813606653774889291549955021019399812969016809126154705572312979352300783435554169214399252555930034583761935636173381198253738527908013686563350562939830180623541604923932044765928522592711685583294867394949729340438232554925834064718473475438487716687169943281208691552743369972974291776563494956895244876472047811809354955403703034374305842301743100130724323329811799436784107060196084233070743058791023753327691104884436829212491433296069889531466693877174563879368460494488082391322343996180495941131158880414821714309119407376221793444006506729171353647174408384456345026828400363022711617414244983908029682679293029472962003624632688112842258621843946996743245230003716306496341289896221148633254648511646504397895261920079293199110523418089332058783267776035516474275267761578796938034092440365399425487885730146534390315628600672133523557234674595868940911460574442442658302257963020174148138345988469824983016908220244768000169506315101076898998190319942506780915731854254877054081918053190784836521395154792533219135262674244340843205206573237031685424614973762209311242537111055976043422720575697810216488754165294105062458803328610471337660619840748924048732546570392045460335931709469465365552399594702243220654982464112787739165310086533994882299084739896091825709889114670700182345644058794634710531500985050135116699982278320262518276667052525765521931436908601485220910657390974871153608490854506941166968355686558209884126494367381056424857891999228928140785711397094901608460529761009481034320435040055785596921063168675460980624998464603852793901903877796811319727606942558193323560737891103094838045390208859931287370113800914774096271621221857215866173034544438420000045033684428507536292144330382810448529173911124578789055597751722864148591124078144382746099936042173464024050291907527536880022787101296625495328064916608035616074892799303876844102762886134763318219186360991498716869552092053093446048945603389936427469718953320473421061576809166482192201193877220499589612351111762928405475541776686786773906888252490506097619760158062759162351546221572215239668105171633099356681003324657416939439068229786024899806961109063935324768897378968005306923670055923225926353433360031791449666217503161849432086990998514044112266247416543138855826950704364150413673983656343060814243792891367075138951154702695588800157034862400805343314168444535278880118817086157142070297196861713593716893747402480825547275200499264453985761283261147468947497394066923839057317045521875999896725083333969512171718226931633827089776130578448096406296893313229636618986409834539974855785717199449927857006390444555921713698439270286796148111608604152401886467144283701959525882456915442564389007172538613997240214353320930662393884716783752402201265733275521504648467818206373456375378613161111231585492550460703626719145810523087063534478398205844555824491168002813539505944349636580705318377501932082549853897773539905875187306302819424800827871904961473315321806621913091979499483408202375106343600223306563770392665669269816558006257471687311077104554970890697213797467673898292007290112723117960042258571721177656279265298075163399803042870506958478307964548162245188380528560237985692483468723945470363591851805248696904704157900220741083132428590218923607916426333266127433622603590909579227893302174229937996808920493228786365993183380401109270814820137680830673309457124213324084806276135225758106471256008419500605877335584130104651272527825352590066945621467670944094538785737762250295710002088137830921707649425229756081197530428103821654039709625802741232924333826624727934611467784231726239759386251418344957522029113249001318079021964505700663762837644040850064835607200548655650282404834852604625349448022097178372231477342245545767649588067756742607867535983204039321336396721637260937538352661706282677709047884061888918587073676212151194618352122722880749206340222576552236778236938795194007975472669820800359623593394059923560518577193109065847700857105196232159057830432395329843087115755136583196333364283833781133211991866602165376224410295151807807259098958419452305086753219310138604510111955162963672102595940994011620077597695937252084595575125220344239751573346938102974090431466058960963341604739738949271804851583885906219024051940609142103701274277968585801041315423351456165345682391860044227239514071268757016093390459820137084374279763021895083653558306595532409367344923586751598414971492539463857364179726224823777403155408029730627869874038833765609393308567098596265675811481367266754853996728207487649973858525055830908547550604041047405855345399406091847600995712593951880462448284773678676473862059910829910385347541163587106945997479234233517473172182944644849637670978773124819050665084515323279347941206084928807019910030336309196649416124806927158183448977774943168591650679076218862717546486893923126290749823934525876636717315612059743669230363208895191829764948018389738932923651072289230582231045681748422645293384865205348009959619630994952947438977843298094762459605972150914905887515476879620548260965577998906068118656816417298580278927768436070304012441898846329210743526175692344702965031484399982575064136629436574096366304226572146211730276825737287296710989149170267812779457927054341878885769392207592726406992134927614723037102676811162683753373156120123499019805496925290252952519523337887935289426596403189211784132952894756887342572648163852531987730885194358511417280870154667939106691896111479438825637120441829131670636017611711953222915312774025494183823025246215125175332910189495369847297829293035004950935702931482495341009305167657705370158155058599397276345644970536598562965078019586249234496830268796445381388264886256944883455511697797431088777315545429685478736421092336816471869043209775503403706202853012948087719072761847668798548550071307366602341663923710474936494894301812413354201354453507184827438697392790757602204156245477294121829550400686311153815476757791249056912861048718218419090221801302872224082994137532310879037818860680535584280786918514528734686918179012593524259054495041630010237815704161852554791894951004215725491918554927458647881798710801152359733466774404983176256302590034583250231477009617989971054791216182633372656399514338782562654918692431868184039867850222325813431512543960799900083092485095802512664222244088540218420403077707896953281903042475105263476314001606337010740712674492140876974637024084984058048697397807895237101469251635286639928465115565871292503442787349006192269228409948062439994312257108773972911378455293429630062940382416523104312150480084691765690063856813492967735678861209530201670512293329478671173743349508604178360440429570743100832448156453373842775451518840606549543628328159593241903019881101845832941804863186369253554977696499498619144208540941547600247258521515579866237845636945267521541118688090586981812999389942189507140015055125764296999757739326473189350987657043647522418170414733171010342016037413410282593900863522359408431299185740581471056163182161493261593495118142410188185459311617905982638951773810066135803702275482619329375337198248224743700760696270091130120107496048791898578989149380173408097507282033207116057190077000734858562805005652539481194504790788608892509310138258537765170413757729860673290189547020205042587651042870236270692424091615286231587979346996047364028494927839980230611122581124515657509968841654854760253216216634407178210644810883482448797750135193467823287707990309004497693380026145069195451931515553298498459417422717241345078656041994381070240545602558166375066317039046053212101655958581600921609798743080999119547593239135917484560497158108843811642280794531080712752044638925797576873785548863951606403439795778767953109097594025137025599199262883066943802184088103695181019265885860039431383277684961925568273133455017537436153950499414369489520611171724852644891286739539074758275826349449208514191805012488613950001590358672353143803337355689155446003337901735349913555974935831421153244270988108263906917754057490469928735578580990291897032165626330139147165216647436575072941618336490722927362389608704855497058662149945808177600378030216650634527757158466700724520205692224461915463753384905411868940571674860022722788864776426608139472418909552335500337091488241838605158863860115837272843663970767169077109427067635576414211763684084367599980406509513197588630682949489021206948620132780457875145656011903793061656841975430163790905656802535037121135106107388146987860912338760579614442427118969804816714122129834167345903110586524161866569394198134356470529134433588608553784068008732401182488544487593735528139090314809948272154469295784027726585785324379328436281046948309894835990406409985282617935306530782638623957559924795257483611021687875284846099533447769695690656479643094128875327824934987727662602092435785338834403163017777971136068353467438242305723587248701512494207576972458569084590011942011493034004443583052262453131211505048957959746080815041542263694777280117821823790791738856922270592849330808531515201074225326642892382033994272739806787567392589642335217658841290093056741618445150200555198537045950596165882435130314641906174508746333238593683701148413833419470790529045988165029741505539394639552149529951453394355524377068453044408308455862433089654538916426652432123895434955742603805300637195213519566451218190023929265707797276333780131083893907925036047971538070603713706197897799612394743529875567705442622106353609298314222274245280829701368090594968165989798341113973435455249157308820138277062183978664562090594351229155211106594443428839010165079442831102580911197721518614832550056316011496425592300573879586098271700430713906070062056282935602310698251128587210049674761312753229080567183103179792494458517147932108828062985595906971760473828961771472504493010704393808601317252878894035381750608152905981125218382275631659107726181194159180110452376597289326122216345298088261336742261485240593752008218046582296549626768534448658635626573041738919067171646597142831039755027122597180606503133248511198380524526395120780799083200143167762343549712262820855498931370679048677182048675727910622655086637711446016215184077298412547518835105218891766832144916147599986129913664710749392396899565013789717128375717169271925849018005644662716109170290480466056008777828773877576977586691310366111950302850021282053996051063060146523275678895672807123515618576119341763469705273879648424293752323020222958580758869703658558205846323074014774418443747066504684252108965457675531557413584212927031613186726171164546108710797117001248614479613089696604421963815195733106489881230227671312831875021573798802545186011730539011226754542233562651513291334906143415240233176067649527939774011130946837106657070883241492889808561189975257855740943095330420624857646648936762566202803759498587035531742049748711019822024436907051313373110527169251806250106095401577394092544989185560852331744858035722106609461068656035428433339435633005035457360792971464011855018465625652862758740565501557633378537960969639997103550900910800959388987962281874087113369212502647238618351323318093851035506919912763633737522588765787951328900968967706716674800969778424249794806659356073528927443699103253453547662350957150354583441161792638158684180452174869501680890517506703333077143454429260567472057043873479897910992725180713170460301065545584075525912249468874385343480353362005384426021163641235708350771654060836234050542326519558855948245022779802320049534367271169923566307975894401601903257973671459237333490985464329529224701434047812896258852864991203188388051501310336804392916555118350358052347591652979884153851856682042050085460348803731142946407118038333898060943351391702899778062042160708389960763167792412361388203123772256537412595378324861711299370148362041457659938523761376115815785066382018485966246791624291222827705687097122583919223234567621552533311807397673580727417414159402225837622165201427182101159311695416246545214835785661445423997926028537765311744779594774863350578585606350435145383113460855812140199029999171025421688025551828904911160633922429888921772742915759988859670364810832174109226660976948330012360341418457877319942631854460399623677507885245138291773278628146444300275749113482479617154916207413352639749033995441670816171897488865131148072231731139687559329587829109954498187983484147955696111263042485934105401644634843134519078545006595116251807724334571470080559880140366813785741842264179887639030922761628075590694907697454144132722154123379571301582276556251455817382971456142655092483264374862234035451471133547890178799321323820141751939847446147418829412695278063325272759815822093921916025366240872175051244932548735641189770126318258107132095427243906440965885250448390344292480906296535271051390923408072460033701212477289557588144840292344013890572262426112790433134621699139315917405430602102833114888380827371764229297349703739644043697959924732625614604504217416873399798282340298812346389496677522775227341153444267100345287068591522755553278287689721418371453766346446574151158742007812128875239134396953988616225632062902840023084154043210607113479831324364164779936762446289127395135984813538576904906892277984407971714173041194677238248714967008486307447845831087534434747481516991966175489948898368427438045734310215946749016485601342895992460933632181455964265509236935905611073021710009131721437242140570482914071894294831358101872512723239813158053283246571192114401626071141797694075641049484395870645580073266113434319673854464898814293929080567768720266926894400302519947855108858544618905269242245553138150787071127367191053266457383588753310164953643769039604459042213792653566838533243944557892830563769355482979779905266278431279600899515048893142345602192888994882465428263782362742823225375561201712369151594003022354063947764161308146731669167387201315094281571467160057381852221031436000563546196532504615434458339742416987512408790084606649031762554909815002929434783947685465852282436808021305990525095505896455890978510158321076728893147331014605948154789213177170033389508533146832430782767891337253012082572742627061686030186966745708289592019370688041329362077853615700723466820486593162510554562604133952342438897190594717183224694447598866812860643144419774362055598569558192290071029605199496569913534536316362015432589378450358421208183411466223360373895258086748784840150155521157078070679236849337436885335509279423397342716283431119048834076479276156077903968174521531299008842396451949858665476129823554952472678046800552794541034741953391553003101707376722787960381218236942519060287951967686792520793873482662988579688003020525043876516744290666884050145433887527928028879974131284768209203511423510043460496969638524808484288279730996018247324300245520195213339860603564707866615021543875229070460350560547104932364917519419086392250454823469009660784059373025193115385439767820820202551579247281728686081470719823778509215405984702283462959040566455792259428203547090331042721213909760242191199296959039976407932727389661392525887295485517032837483387894812414741500035326478872950819977548190026151358529747574276954344860517139669116786621989597715560931010090622134316865129917379246138353327480599126809325129262994456169215447427778245657213362228051438664333916486273508968861600546144902685176566271607219246426485945924630010986704045272439849924626007959334485995508830894303440099490157523627969964919818901371391701329848199253831736881437723577641100240134353223807009957434241522373777704196763476967348904142118540658555588367656883692277928559493191601763849022014445367209084257379289967491904301032077209158046052529758710875467250587603436181947287636082075709011168163037204668988106018052931068615304715812273617416620216318274262432369734410931106822123899996242461520049711895137185775094881243989639159873166837860223386747915529278425993889250456476650018289512514081236073891192281146553734913324414071406019255556037673630533664739935689874075721613729804940272914267586089940765561289252014256196663233234384094581349217205961323831276959449612201733695800802256928379996941813221474290057837208473699424672045646593171909721368372589521722893096707074098180799190391501965771701106484709611939226246500922460088600789290481098768678821121336112485224979914991869913941858997213140197847331847579212496104952174062994234286233479178906775400229603378658341466403775521510349428424089156324485610583971913881395687492474375278764880271273315028943307818879462297353372438467078267445371253825886376730795317349456988392980533055522195464011459480778760682429006097099780415876502444971247384100132404799846894629985727301699739113063244987568618963874028116998033765615313055428309273759261013515532542005444634936832456170592869223518605361011382801969689636034906130395176412373989043804207517636513707943524958316096639226288112142574130627287534117602060094054391735258756727124712527114111880909746166046910353984570314053609031497511343577405575208273794708681188143285095652559785978633730766914473238575364443148434091995088573260835942933403224886565258477898258061449036246448492087759974812276223212895880627587723789527486346935203341312072072593565186013293812945737072227820876673347169145113552117626539758697354534452770963603106826797085546394407892844011734583343952729597427638134534914824298972216467807850792397789926849582107101274738721125529471800868003146147634747709969694047784949190362786144020466318271074913468896640694253992394486130588382341832044008349809989416004220407550906061559164099830745605599716978248685008703385568730303983388267241147417115353470112805324292497595928676582325209267013866097496960230450404824634695442659556913009044445336841489344459368131555377784150809881805992293582945953076990949676062002433624530536906817205510894639781278709623284926287157992585731270647024141066679129580654076722767139153826054291014495558222915790690028853625041540704657207149874719402093533238143306143107051475096884723993113787121873886726528150219344602603692654881568124361363701654165549739443278762936847868053448014370113699423057537204365920939424326748330516212690451852592087757806724301024248378624259079983911725968515271608002729244139162262602146574417541542782667142177336443976414041568187291393726792952287800361614816876680872489704195596246804523915191182553143966644861145989940325803691243175371850456837273351843371348721301596920706208017774644827163587296398093314249425314486444390701582201938299108371288384451300463545973278913977869452246757305857105551406440204986790028350386208786764323926338741025960050417784535366256443978803428655853216926904624790278901259016807988472776327089690422120878186789381015699635665223118187155186747066187131708971004748786816427346160437540042106796153055310100522689739381615489123136270595916446077625326896690629382201702704711784437705656759567063310913187708894914554512561542575643276833538228292897091988202526414754238725577875211607996946650768255669042425602158103899113826214946409038138397258643003604444835322908471675143860140353606621544318214935330359917840668939619973967237391373223137476219862251121109922950875217517851913254831342976581334779584874246414918537994403901095549391085964362543531257768947193860127933953974622010601587931790350011319215686587538489544513600230771891655824754918667548508438430314445290369789015224134859196492070597352024384678466086239390458924714552715918089175179880917011780165894231181817550541640489318337980159352551862395023863832125604890266716838311452205367647143089731768935473605099247431445289312999287908109016922669028769419224901762365081156867608666383699338617484415332787669019090942161533069051538059099631418547367744337541100601911932250335089902812318889727835358124671676503319808822388416220735346433038013485721056415409922357339680809874045546775298461780514476032412561578419035184495437357317614147352999052259252218338173072486631415728748544806822328751071084551284614550892862968693495521416817733683847721859244083131134261097040121681225373889769506697321674567047037551332002800568248123544744297448254088094633199424150977102055727574686000536070950597314681463046956845319550774827968738501411314925625541227451794283221198351507491646874906685447286951465864167452662384821613905144100363530780850996969201453334572479711178292689807606674644239314054609245185434031688011923159688659915664608569472659180557932782110015198620218252978467123304128590301775016884975716557290345345326126525293264126495936335947561557346675053439346595595017793560252800040237893560107695007639142307568388223430793617990132218836235359256902837538306334531410740199529449511904653171833756263703306998639680129355210554652588225436996127546273022236169444162122493350787648412238551819689968011898568898150834958920929344953802556697090684254449273842209617406551320285426527440405626770497143195677583625754683250111177593158493019670026143512612811599744878758997278129564111974236095263511443931387208999741655195604941952953424509619116823560907641999536549708946361867409663226342419984113629897684697888250779512544199520213043598349892974231803573415997428554468317407196725857688798049696045915443124467173347645945764402923995254360812710616802300957728541921882803700717526195206338620651918329537870228497254145105481516540054401014487041810039465697232387425626849153350913249252916436567081467566594222400268828763044021513668007576832264107937991838340628791722255359267930115289093531841036528633618410649121237148536008591250947204796983663623379546322623466113092198310138171235410918746639273313917575804296934306282890246548637490211455918722727462729362352713763385214667507633992829071567574819606275868291819109760699825230380175368571548285517088688995451863702817959259582253281171915475381846666963337299111697692535795263894760900254395007519134107294128791309626339901670501754244587775766528893859239262227385847327275821305359767510188980842992949814395608756983507979642107075550035199587045490847333366308424851244786316174230634601305050324963734824563915887022336639451488154280082732704357750340329898803863686576331114128378859219875966186600160116978639445178972155095403503802470602970191096722597451787999356673025934310301477490117473538227969510174681003697261687653613774067539540952600957147491118837833327030710845696099108312242466681318516200083202504551648381888085961623078060844491176992855500402039281106242503815920864398295939358528202235729496557808433882378482715626077252126486004289085488752981263166944000091878784176495934091983300092488798290128403023330033121501034343817230902682897800617951339974235758633993653758580312096195086043211757108014305733624637766589193760497201498750638338425410499509735809601245316881113066953557770182130989348388841606420425023491557315301840922183423183778226950875696424478170938637627366714668827906777254264707512675429991244771226912283354474482742532390150536833195529756204026476975166561390067763584066739035237632649815536829370631465979858482617066796617386557418025350847875146463518997528839315352102777510098547907617006228310704220502821007702607536235036070737608370226219897433500348857808011379425413890021981397223840061707248714224287142545463277379163035696914364507180641769539736049563287934199072264720288007385344807120691865332447541401051609001029839935643382811516587974571448885391237564148889760137663304614501257637074874484061172811827497393197362520617153528563891937324513743910095279767365821843164021666429066279718999944853226555928391514826612267113976948870441964858782509805094183082231989466760622128868965417427766005914164896518639326000929261436869483159214567065968578443792025437730112743838168575216590453958268603637553313122782497228930581206607036132831070008641256214722568936708823817098672000856653797928274478148904713835095731658031047667388655016675087662779915216712395866462596604064542569496492466761543426385817253910735800253900179019164779631128415770350484346172935729309896234686821470365042646561453000396540724856462572419444722932446487619961769713937597055408431745778285452066132792769332178822894392682159127906882636714032101974496293294934438097239164072082548105281494078351778089506523777603945041577268896151936434706824134028360170568134249957243639730080960201367437502677299614012878623357531767272839435154277176716648289030619382557034568684449042215842597282428644898506463491067443260510224841941503542327638842190769358833042023500423446749282715357766132796135877168824646485093159128956791777771404649106866904459484076020745459754388219228726839915697707318426750336589018982986947007965317311202397953976999949644332229757497107178070331831955796394050413150300624117380487113079072727151291514293710790866692816719449992435787352408239194135911832564268006623758233912461837918522829636942595792986660557490599435171919612538398089993625486754552085584740060323310183139570470538588297053031051648765705012517833183803603781854677627908698782884778361315331829128426457935064128258774784419581190075939889812432049376170814308068792401244903815886781383153294323169531391218234929094554636426703474048737789210073636141486046757069963043413050677017997957557556825608199205398926270180744777238195590202354884078851505503583565941151547806157529755056471561173042279005323626006636583131710919010859358553978284318464102549924959940142456640455767705617650184331798171800897528245585458408386865637391220031779639637306916461411966421382800049180264606489558784965480133150629648978582167802248344981933114335473603187972392347689548181169495274889754562303246745504203823106000451941432717436389284396007530127200167672464214134087718988210287304348291054982201323163264201736481552473672182870041515469997946917187470212402170157744077871715162419602129173344461872366821832282486275472964504841128490595908650955039285880435534401443266534279221444631586789236624164511676558475705389468472610763144945093581713088309020944984239069229404230303472093956435400936099559042761535476747446343878217066997077037708530747251911689129066105180366720658975470985860376997704360955578003813303952141207679944112167471937012751923043666758991901980044928728430970248590696300067281090337085705147210576787387596513579714543724227451144050331426472880162996250037119946794999561104412898796759914010233033218376578981691494158246926619047857545235164659715708199843339675452506796367448426891082459755723530843824517996363804994194901488712596630935008033388818768217233497064433414269689915571732322019372918199992818201623203576111458460953499895032772030344043006084792882348635796982479392939841664428261098011541534028928494645493382596570717874754887092224439404764340716962811120030032006208100386677301933014726284665963066893298303604604235725617355316254794451166892198680548536055029695615964784048200706416680487047275731474750345046970424678981553669365958904362828138246277151263618816196785282625800797052546989745380796421401153265776382355048661014201838650439677930222628402429222091855605898714628854433974884529607483840356638136705753211691819188330855266764147272400717243642940782396410236512294441323345527903455453284239183466540906696708107349383043262800181934190163843157618429348013308584799378743785954255899203933650281663981101287237206730804292567532952389982771515855122206762875519976108178604599020600170794666952420751066910232478858066600915346464499262297419787032972202485809292690243535176622620651483903353280742473355059304974917601506749268858855242852286365500241214894431916655777382572143832346881885945929697590150698830459256710478497277636479039295086839474688266688379869673958128030126613142658258747378315420890636523235350212127057167680703674331993883659014582075424759681319589965826616848047673922632398784555394028635836899409672730317871816269602917828312697060765346730641881005140967333040754102170171477046098080527120768315574875252295852163303157382445522503648246079700742295824895843080785635864288388122745067159976933460382696429038744846697162951624902511185019212199857889528911260765393047107634364119165171059773699003477666059413211577654559055173821108999165369116096769415901450489018569368171362777836202440013136405668391424058718306439426386526330825378013524833808389215626186288138563023866364165788602252517394262283392220212977799138525767808669630271750040712697809465511041504670727571516354853566494290998282027446233157741818591611168562478042494115610542356116424529505881392385939137596185175657571366841044900793328595030680147275144621542911974588504417976132030083138214248582377245401950121700921317079356438889568151110114030570530631084562428932157304066796637194971888708837142932095312448613457103155185477439050027580607889051035904791722104133082565059300455267791131899636036039416897906105293820962484880421954392728417734506157999175096989106260815640926360677979124747697805120813817171696266257171983521001883788348528962547378861030492131910543060432308875626714236990537356157923876607262742392463179757459944476062293539398278151148902241327614250313152081194854013684348952466089677557729473327713050645217436374284690826459599444604038796804460085179336855782319157037028748783222772776964250120204212182445577826988935066015357198986060803181299805229785704496661602008823266872061783290406573637560597678671066277709560926522643343846242789166934336585886899600975275054136478752083975500769165230876303233733130606007248256654613870474832480358838548997757818263987341181095978587771536383222204092220558658565544941616219048874756531015134174677317370508584927514796780894183855387148259840938719766563909758795129807509353614041649004654183864660061095075297610549068106227621795860365070179373837865473684384408138809972236964468349889535594299029151507490018168360479062305843696927903113850901952675102253221012033254888885192065032187342510273284893724460821577133483891390311747240062097971197125825264203774561701229386392132165460175356143758920755397101885030660538642244502759940856268968923915898357466775279817688059258068097354021627731087704538247514335651664923842460353904229369723596686202623260025296191538158707309434606461665307795632063756369310824533650121700938139908717609905039088718443088716773805955132541773541178580175103326979506493370509940385062073702870989166955337659497202943458035517077028399632452586484980656404784262591745090889429013466302938764732775951561205403079229409254389449358881240390884727601643857403714301079513637779475029376009939793468945251411584398015734742042788461928267922772953697064973341861515778027203344203052635940628078190942789263209389173994247507466660477542746599491443430293696278445257535857083981486415332172096731148951622555919181695886390790701987126766432253587978493908867737667374300910989824509689616103204973872294475675851667325804871683362072501955438313682649000710711109861047514085667992259107315130981951620233344657692183107898212260222374473553234765155929812245085263840685975758114057776271434397710655154208945301555917256880068504345079543268003921825784677442132923776012329716637120032611498555845487144571203819427159214400175029896724725843578159669508733685579501177338040484808981755408176721035283506670406492006502012531510457212715591582783371301770382215239904596871340613404240284276076122217806083647240745736618013849805605669769598631333640189776746499297768892607424139657668815209058255692310954431349618119860486350588769597664186708485644690141927057367868124083920802056035914768936493585144554148308262675166951339366359937158317832955874565964242766421963450849598466520315316802884581290092688932848867391080616802140042348338386522909659743368952831328739975895380840719125559699265632866661262508730100527739224936402416743035556026943493105126067642559005912450709143060834849801114265484098929556545631848697176384539701393077435228059810746909518931386568790271672059989414530598788828874867808597749066517281937489444796825560976244050675841953579653225846830674196834918422423471520476114097614477649804331687344438642633253852145408792292497282537146212273347414522664891314202369061741506449452571927151202191668254983544275847456256411737187220320567651650740099295841835155968250634097795243427106656157877699758573881076492438022210059282809284472920643746373327040716593247265115225971999685036834026512188817191079688902957740153221546776116637895555998338416466829106260357381770294747028522172004408851055731751508710853129821281876359325732159694488180479602744740380550617113570802731717713029695712851356011957150861774232264904425071653093886284642148442187759860728872804737264273931423582365541387419773460589159528536639855040248087307969475346012085549786471088047681235120042717170095251954678369704344496172367360288415205203664022755781803483358712546634056473374153593010533052238406218336173235700976404327058075241346729762761286085058615264424686459365456525136160724305172748666380567711904446208559091898258819073775358460620674558823155970128929990130071014598996525988032126083231775173936598506487029284677216116255693766235298215330843639138666653240161639442127703526857452840806888537980607685107673352775784754792094339986479696645454261984716919880072192152064678426067114109312569008875363649759039691142852013468633247236245364257984465474203631086851680532714102825560452022825620711067610400131343786166842591065586971866599351654629283404824697805715543786591247097095300813779155627235025888321988787433262580397636426338566485600336846430552436013598818052952523528670308451784994470057301311188856698245001840119408856695427827166866736493783426354141959403673495065162104262519141440548090910175532732906849354650529875808549968454637180250288066474883860351486442827944750985665455540194873762748425388841635850188160758862327088694631774781402829253555053717086109353111028918581648720266714144220404567444179761569936111454450993196021696663708420064716589253009658786351349899930719110266372190785126557760284309162117177656170909943924368023218657676436007771756736563117993444264459743580670602251940100079737522268287563403825603397496451507481156732477842720819038599477237858521284484497426000052206570988289204453448160983249433972642775568369013443377215602437724171287113116545978236246321207871216618326913400254370337093060115232069611440556470881917050694761038367222777529441192066710127015611312511149323263634625427128118933029615716751566456084321343366239258675025885906971154745232357961488382645143434834123522072220926937858441431131175496614557419663727015401163010444425807311639859830512424305384079989486936784221377731426187817339815691969389725227519820156520274219351532923848494064105960631324209184698571824238836911236990487058757055506267354175946297050884668695622353099299956953824785196102525621331079480840744290334494383693610762645483331909681653463573911643068746074381339834999373407402288740948684503790340326864327219148614705322184963562579700209499762091312943238434531966168748585237190448501480287115432807456590753081412823117118809257492869435848350909529613368304333112414381507383781697902361976347963884553695502847859028878779999367796393119222712821533584467277577386464315422669013072224250730381512078976954275384162960198035416128933737941524737156789075927517448259058941916476626442882312706094822742556229493645145022209952688479887513115182698303439588218417912667969522533244636322769207042121074766874501078983939576901463425130812936177942030326915982574740381645718558126800618473388041483143984461557068320573434365903270388873946994976678768478065735943554211321356951756757794096484923039486436277262239901283101307457847866771451396635670085930589587174348845068454014609017310164645711314991852271564014172650647009268847856081823987268780702083029559145742152924157651878784507945235615369196383336007443247008622115770745772301020600704578554319103258890980352793849987471145454987865639073483211735500395924316282681371180920190595316581267298711289250127993944886701332143541955824676661043577953784883486714710739632697620367952052462931058158554093079572400697565443568275557300943528145344538122076612465245960785696990364203675803391930174809236146731298770244203228509084431184390220069380581144919041430909563227747552550920261397469968571169478337881311742705469839861809396106926825375322558974058094629085600022425421711793105049265950932125241865162014687334447582826646340212403088674449126716375417319908841374502143728690625145910402970729147026683722923557460139984208622623952036423914175682958965665815850708745909901075622392610698802981257076019938472078447969533395331394274698981523831092637389277065170224245723516213837591474539520250511504282378180115897222223416487955639599134031234348190804748668313732533485653832033114940164164846271893736094644848827115348640904127669456417227644455019645846231115400915944047236928220637831226812464405347367486885431760648583152064043878732532845348337318423669205648516342146890478178249826936229220474919103614189081128346911235508743915785519401086246475567160469171936814336498492674751065892503006713960478349677205862372506284879795659984711735855908672024980007027216998364698284786503385450015992242814552517267922630595435476868549580106094230461483261696343969433846331666674279399015103748809067443595598492521492865660714663541435244944937883175409605236116594878663697398910195424377567338342584915576458511471568474597016672713916213696674898905382689148676852275057128383585956177628598294577622417506395669912297776695000105657680379328566008140364801757734505135027209225368843115342117266335037932924675705648842739608577383800680543201436709876987323331317210338078923822602063543124509116164649875257238879953042097384546544303898479178526305192657152531120959372372773780880730745038125718561010688696869680103698155368130573479866875143435477378669465496367529385815276252699094392871524163897844267306392198029003072286432047529458800249216012667089456813122407387826949516671399219507319079271063179846367853904942556065547528710678178041391590793928483394879531033357435538532387298077862073872027517849503017572434875925706157245268999017663131990807450933155827335315676251530728733448317404963378840502400653452604626904331175333469866681523142745011868749384272234683038756911539596002517729985397424126822224194359864163261604638526681136107591687857855314612775929176974096703106463986461824004152367582987353411930439479640702667605455949767386673754465478648394848971958696612241551973837513498459114437904292728631480379430168972237827073837291100662904831203541039013834671549103466475722766920813291921055207026974275134280830687018737787331659637207551299604560070254281257482901899068584814412823133103889041543934532757566127901108247482567425369634251152003855808413212212071674098028434788117026883876448570979024099040699594385883060452963775842312595379485701702850210560831350653348433588451651243811220089789033989212859469059348976532332185836831378917118668837296147326950189837041482530785482176553837435699858886930810357458388054800705492618313471174155924655127739656391142241228216049803954132497038556012646585643333811539396924474199204261544453336249494363850157821955080707852921392296205859043054677588316698487034045303513522927990760173295379848900688551055672154227674687414998459194865721934107597372287115554936643709525190388665249087196107823327533325361996183980280785105410801231815770884086439696926237156570364089608541354900153274216829256026357949941654776690249685834322119373396759208587035498709025431618849725425462889438885095154758355962538700848238387889451804512891804924561096059074243466343846662857399824042726914094618925811122140777321862514628711689008292772788477576433037655353484362670907182357126451467502087756457478577907566551941854484744419247613892451743653114988249931397305722636944110947551319513418273845365611737104299611410505923328472453807175410356460418914908176250061228369752673977232272063683783399192301221013706505606305688491394950114639308691427037221149616828013364682733059275868373821778187725836597259968709724047764097988520064390622700159924941614635953215851759786904744122104773706225429895083256947741848101876384265242273043947420633246469195943522983409682561287371866361638927351138716309311159727149835592138461556771510742998749163111523966828988827160240249142663069680567569476651076142884058844971197147367219140103926606086481364037509401597491971671201254790728092630312540289977049675244963684872093221562553766673944523010527500092441135653451437220037127757697970284147935862909461305031274365556200712683001601471700500087371829789303589916215165091520426820762828457259674269973564264391692838267772947907017307049217402276821054073439306174293688848808164803636105018297100908039422824398337415200544201265743590423971515519670227286838274042544750716790550588688475343646279308840894086442491329638913853635318934770704794253609686812967611747194594852322247108093787124229167636963307011674568425056682741047234456371681292051215948533840892380734893173603327329977515503558909946314378328608923041081820337144685093848265463308828582834992574305959786313903871266291402617149662367845051815852878630566681336694961335316907657223446415063046372344318169472910720900920114853483778947124056959920326222964441228195092379639174622492462643562131601781798340237809684568031719074347382248361691017459234871219113975206706729287005110208327335142136465102034858857577936938602779114273569989901856827996203648402091713117022027788642164457200614629624949628701953697515670887305119272210972087633531331724129071393893873586926792238310395811178646276860465978027604440655757449061588119420711282289269111929882826521373563949525576216771438060891994486096769707773590264442084358580038108269609189912312379547971643487168619431354297757217500220988809204637248293527284825598450197585778199290953643800537178105805555035927465886666032581986366270286561886212095101336928193941282626439834670747028473502767833169551555249440189290256923636318657815436334884693782885792698162986646775682988640745230872885206786374422416572460026442515869396788355413388981950602678273062903162439223452742885284090290425952359854739469926387944975973543138285701718462145370384421520013819855114958234071218507845285905518223456155400166414139930457922178438420823356632230628999649102592985832406263251733864060750306729854626315479506705121735766796121018461131459816616067256585104409003163137007560449413436248827722580129146789235554035575760249379284348636566171802739915121620829827565709003333755446867614379263767626121981458982795053967152071545716877784742189405135032706377509770906526617857113561297526378095372988568220525844266045198186754915240116649729798287174434721761715317644276271822674467927816367655348009233443588423931563796686397055622126613486103713926140025509779205888079881309815348345434370544152575663977743203917508079764494126728155259580276135384195860562463885379655380423958099921506380641608375856278827526636037432852527920273602078616832722940043370018201888353449911613336765030636716511788848641933236711474475304853043502500700727064399853322051658703766501536351648137761816083363026660983381716230511226990696242706624480495796771540394430687091669217312587286283115468042231874268549197314718960121958897833436921094868222722581456909880305657336530244686446899636885509286216957041947242248201540504086449216500743252279685859331468761610965564356839976758391743348528126988226186778056441181449894430187815940929321987678179602332738278582844388539892541220578685898822336942433512516851665693341312422328476651617210325639551881323499341533848829469591616169840491032824715445568330226998328723752006823659582415966741450759573194522278484549172102263680961328427316478401189813985432892324284344760925364486439689386208384481686718142726069289415739986349518328660062396521525518933194377009264522223550144478192154507650787186408778741520165518579146659621757853485635735448508938136434858377794650793996775330989055432949167583380949726299112771363675728681005088780666951109710919139854158661920614005700729454333060306742742232997706473501100962168352386783351560600276530939872468685279386214801513443778070796003458999986924893499856341717027698785830919345572889304193241547631868375382881584541559277033463780221293024121524997380603443908971388264208498067749258518546343595702170624755524957455931331938971715994346595290158895776579373866332637779437543719768003565559594892091046471675431780386840820178868568522278710213042215554495889342317432796893119640834079732978604389517645617980165971221129146525724777318974811637992496980693601970453113279205507268581355417573361661313293819357598806690867374786618635868590303585254196840065775706175950229190105201570770058377045389770668710066562575637379777422258300675988451427740123951109182338173090216623577391916739639267759373218535738636183478995359978932872375006931336935467552534831721406021662823633769299065780917897443996644914051225867217577021115683741605324948554008503016010292271692241164576506146722187446181663950228371300599057098986222281946375874083115185560352752824995539508236935447822408173791919823567783404642092416879904931421218972716095614471876938130034315770751098693196294775504467681930954299849045038793119250202461257868803398253729226931916728600610987909525275804539792896547322039629082176577488405157086976791184812718110191728881894500419232552590135037517474481618979447830196300619420534095379557849078250463600509767720230995651705631085586708338536881870268476059709408304329440509936604411864626862514921029864517105043666668807839446264620632527941473752390613468143726788054480311668739869693188192292624257982948744056921227188231722085057062920980870569097996022955476857304997722124918588026573213588147778302810023277743492649588208338001669236083133152987801369370744349508356275738654451691746888886139668888774977591538598113823326689686304348997949985687678301441398509515551968338410636268869469751031304123665852826286846618019809118856344181370454167149074438428739591134869135070010954294647772009564612923391913221395258169511926059458746048428690645809673332221313698286709141410678530347274058357876719444611207967448718871803085995741656155386761634076497221328863708386114105476796072723974644055597246533912505005353763991911494452046053763700823991774054200819011634941584149264646446367027201765683591792819332988574677033948048797309481657169165810328616304989580374196839064944740923358926107201161735597444289625775071788741004330008570832472784161685529363993201536422368323248633500014802840755227773614179748682064742830499648520230992880130034411480780955175716321071835115075845841367617478648105699666560186327293804774717493008038978807425541366850447939333727943970950906150270983993247307525278026810046002064074640978817660654596400139689988665678673600993152213266592582170109898085608726144915355472353738561403367744650845387204529224723450292718292898347176704254898323738367831757561294472431865714114045653639242597887442106107140903218047234597742804082424704054888801798685782598362311388467250349761464081324334522489357771777231376237854756212126753351070038289024144473757719560084387137476998477560833081421673179444316276895134411637601141646444258927843839409703116920370436793888754795688841927431859514973827424882122629584206736829440074656135522512499960875517409451491216767222053229712526710500522691826185553259127252606853656465679137313187215949321111112674163478516461114144426646085794001270155667267634492397044869052158123177508703796167576435528137511913659375879937253962101741821185949136716397460851747449355319640227648259023181967181861654836840060190740751126045020650951461383939663521515178827946338755799667721510891337302454272344097104756455590366663770342283675642044197883200353611366669498188361742878624849534168142751338973121713125192005061959358843443701197782890061953798681378624269099740640834071680088358976958257170410230423648801975887039281155921143414531580663412053773578539724942233228633730618648352169790088069741364474021162528320259239354137201282756429065960946388504467602202117392456014397505606161031385575099600317499029084642834318616613307578994077811889254893242181053369141677190910842350454700829837004480349451968107943618514804475665315930600516292880149704142674832630344927118395562217022097902813084035776402463760255727762217641684574273487643040111242226858093986526888808500661292308564725650536976912152314572659281700038493026844352029858028239427196970081053578282445521757124624000600607172048582408140565461568021248923199653059406908386170380330581076190891070613529965764515046092703400436754724854704812034482763118660832067524649491020889352244696610350025482733733947648614309449313396736138703003074267217419371551242618715215074616231728103475412798870461333428181540547033935818539455805648625371758994525552655183284222545517976181972886258962931204122543019741962821570650674133421635420697651532831070619799175189754921055435559412376988955425533304894283475755092480392730664732069168671869774000990920394625966895945856672467062871596583991292476625885142208418749363110751531994122780269344074455761453545812624695141694154680784941509481671080806080451639653852208418528760903751214191560431016832347003940304949336026094088785998915792368551461491354313125996974133548203324672366276451951127712120881790163540420108435848619574058035298124719085532323060408394209695316143765282254369639746228225776539527573491560124811920639765622231806494802003425031513957164468333560165401567557850847608843822398077655005374281656728208858645299709722812192492920612247891836442637209929699493529954004214084610632945810117951581836336498490350220863419211794432415532934028309526909448527697597800210452205701625551139491030080656844416856366896453125264747466542441365731795205964079458122414423593909803105878878641744583589100068497379594074012110598034219303808076592964425334967999740802327069287368094887966953211045148439210294640130463718612815788396722618552376021115409912549131563000866270879011621107551095057780532773451685825296844919841759894179178763639884945349242345880319994704356186295689041300924786028343655305764429788378889920826051042227402377514714263838636801572691438121415182770152504848188054382191127150430967715125521129630161287991932909012519748945124164974456760241668221442388556877759567175178281870873968377789765826205596690527476872786558826996983579248135074561294971906913852148027753389643402817858323636202231534262635193329871180997961244137237762041870280771118928883230626533460325904967312905620472628514881648565114631123223653002733070310873380617403406921129430205698348859824120945111849682128139272325592474488761430737266510493363590759579365110082276741221305735549567890727001838695840287512429641998302781085644886596763837461020477950281503605818520331610551639048833904208579700547287703518248799107125889899983190495590638628357459985916996239865900972909296069240813551148130290095464137536884075020049200396170572853617442834066787570570360701483184694245927637972552173294092558947764625278562275666082661064629369857579288642780416612595571419867026277833499152262325543674647592018433683243641586969340788770096129475882846441354648578943589397264498850952383400386524298397919863275126750693313846455335812739832634751709593459536204104109742107616885472062224652949245353100384928121782908880492200874714676465808028393502501235355679388054887117466870426767968655854588423057417769500025523767942607523369343093289297819535335965532391547795930237079927724131797422553974424092171432738009451840151692627298849042414771859402294776016368814395074640857826118943295472770953266935973002341593242926655135179724349860689368696933979945353545548961553876926156126437594722222168861066188922757396249466246846417143043826588765721213273384799816618941943539807994673391537833172190756844175953951520068113880599112755045137128261079441914225446474555435132067561993200157043577613682087988810352921235758472925998533206419585196987746167052247897511423421457627928432385068964221340993231850618883724997569120750091186809617682149207068468208913788854281961541588417285043453128389045920226315862473543433509610985694082091830950169277755728400695851712196696398957883155811484946574579271970936547243835265167733743188849676482127580124858620533418953218579604579178529271488113747896948645967014576964593580449456095986130372808940055417175349470379394387502577681247921185252447073058421036303923120275213568195813928019717182087044143430896166258598171226567557575379442438222182709317150408547142671718274213611931116896786185384345510005209891410828165672675320708197779978066141172556319950216254498682645178273026997213670328579165180313213376187588474658044218629012518010332114735889612039058706420982205822109863704870717785468449881995639347947050832883762481986447168849548610143176352909450160558941901628025754634337912849008806409160945692619518649905825958125640989273486709858651223080041543108341333638696003033006038988931083608565543075160691249811405756812932556033371382798358056026212662345295932556922083420416112007088060695715782145982949654504682963484716521463818421905636713867177685740892156724903976819475252922237674881370783684464771332057246913144537865947771683616840066154985562727535168037324150539665921906062449038102028085139692026821157138265665841419961098197661966778840883672720923636264910851335750056312882001338542334103704496233081496736062598356611217945512074242583083975451759766422858089506867992818444865187929935446176993767255178130865823141569896947165229123119973524819646894486124300855394671652563833024089514937078089382224970444136523241799614202090029130596480497832903908003733338912427591222731967609682988513904383690290495994569462217510753862949669137698067287063745404400548310848524843878143767268091236730041668980161516064177507671639865279332617423828469820250125016511286444828050631375066090726767801058721777305037695515029580846340428067328425725143228174994639678923454821886686539030105483177704582610860227450039505687395231846895591150073237599818398304852633547326490388304933810832616674252603163020374386205310401103996978916450653351318538661913360971735193443018704726574038295399046843067902533304900707614254131422060364535515762458502061636221824971673241555571803794361748628123687306312146778694688357025763442646990916889822645731465478160719099717182748882136132046537806677890984044657269994351540155621135416670745098877644298304990187900304780700377778405713548876252834521092901166417689330474469711410015836462112137717346058461048605268958041815484910583611423414059295547630516394270149303203157241875077668983178699841126803516940972243968231007900391758003580858654582698540628159090461017477916534927174403775631324794996077145694967890824733497369159491189206197812049465528078525456247456590801571933790732676930695177809573601329908138803176703440116316308046443972063541055095593489260719454521677804264123582293830649677244475016942891193949263667522886935523680223401322088974798454149984834275409873810858369470813600356246161824070864128649861024557696399205505793356675830967076711493387365725734043489445047376152736741745633216820221401943066379326544070552918308497111250157386757818797399935877755490924281706514805152571812488776085261054157932161975297459292523727445891701776436086590597127171060875750706161898364073468592909486232904423728712530287884868615731713776330271903320857613721444320878545722251040377456699158970869800915525451368070464878840243493684968372546821066320540968959010146728011815555495643347332140690049415133812557634835168533914965739501874465644905003852301861961045586332785384111902146852019861392948752030743694346118786335606640050507049167954258436665642539178563742850125178052004822874563736894430608073432369890893135136300730495661888928902289727989681125671743284699336181349503907372749747754218696426710611556973335182804593032356777369194220406326208403919006330316734335966850459906398697346347656232710414303362775869558527552214019028696329035851822122667506040484682161216626811384510725164135027504247629599372893277943946932404635184291352108079623918078072112944574915996809179883410141477472421890255065911793599115921778481722388241919507898807200924203281176402844601287169316673050750053089931568003682903984407472398063283134609743099873600975882329617350246574255416054341260397228954154661145303661229738166264409210909619615022855879762828643630396222533403357710766087014896218716845768560824355251604895789749335040109405361167421868568864412913394346135734394592095574636402448004902543765580662253103438463812502539801109182793012936568311695636658860653489505009284848746519361557622593293152120496312674660049760892452333952004600124044359024990221911422991527653023624527058794335081980248014471669277154714746477162217709988549546972461968245825110000679360109488138270188115465444568744684312796009061536309569812132013041369001204112834445230501745464291607679001402986847180798039536298440893744762969005937507069709801582486107879297213403097560443080274726741075879146151071529071667851317674889988748222417482337260794479935297415936035260750741205239361765391661275272431365874754732023509120703122859108322234370067040752408091722586516664048962904588954599249263548403979407840886849291777829386975410906263669638080000264836945649994041607870332141048597521492488162189670016551523700621679421643368333716434768702426241313096287001292586520956506446095437522210947564729502814577767486748637598551910259375010842962783617320100426101401285414949439179299323943093176156078394887577084091869295250907505549011526750976521953455066399628578213228484170881191801462710002258807349300977664569571226949825420826833369623885570588353250324395441753007106672298682318863109204527476906895656905622219418095681128781308697807141933798540962946645308869051174047694516889500195446500862197814424483360547229460592615343152231502434765237994759991226323094037651339866819058642703167214781826038902006842208911886854740076059245719276076209610601408427097896606728880632278207530868797975632809440343004280331474028117661896354834538497048083903847993126222594042633425705002058649501545620820933862572002789198688501165453773464246391692485432336332195228177418630134564299527002535521763171283902692997055851690888254980994562203216383850341679952904831590940642745855210100037806003555302257285347010383492254470201982520416960858128467979538175429303653980250778489725232179864584044708677593022039891363287768212483843804600453977246293678003812550521910548924721343613716923419495318123753524690159651830760669680559796854375346034477000172592245432137241378209861631943457050879198675505545717933547694240110523562340064775628934725810899349462208967217786631835927415964532751308942275699847223312764108630086650678075607195172274706353523509745696947678915671877094928798806963285984236096255534971147842996227399750480357983222972375840325484385453190863238511415493983972647135424457116908763592594673144959545404764834613653490821829497994311012347711621076257426874397276560037899088901870305699912814741613868391578433515627180762184148924689326682343626859768702721310741848000134297062784719275211040477024103528845969228690951305854374937347844253822420758888623091678868585113523381211880676159790868648619066139905478908182926973575873622659548170036647352129625896325464061913366237991143789066949364788235844440006488607802531328276255347722398500421944721549212603998988800625724832894064134778172403114782932374145578483029207697659747762525682544137045970793291282337710869419307554986435171762238167286063725096648882165492654112280960047105532306518377420997906108310420953962158594844696936965144152252266836519902943111899470925573965069616423506597556228913023190987667925149544998108373291288392542404028465270139806302676404030179433678262095868084311235108449974685962801637016593764906996728395602825770015692884765882708484021428765862843945784003084053982606892777025453814585006835939599079140965112301182119941841432445683699873826315149555063627044977071192831172107508739441754694859725532968058128135155438609184165054151470903472762482433768702330510787818298868182349299176602836530732452771101757090822519275355111968335228166197074155848198576782826452692683228999170189783483296409719754412656504147223388665540596750526446527106068250378294647861593106951788726081039734813413974203206376022937504846336575714088540345222012264376718202036230965266577227945604131288654420147927709443951723878557893549713981712395162295955995712935156720260717351314779763665130544994708532417858080369840963301272705048095960921261427527852875325431474642120512725080643028104120631034748229226640866519565483664525216672722557012015520158339406880460420899693110767727255168062356336850126907009490510776412475666525970719730565805776493524847296470348218279087474773738781887236730904315872123638313058590910570514069758018979184152897440381538067246977279954630965286275943592662321315477797648073910600655524819976950436816496925337510726532958741273810574132908937838049397235123165018039412509721602784125970663732293822402048270973312377591398470117247062519650600844883954115830669185607945288549850201243285330087264553990433351688657076245516043055130558496926615724036320192773494786505323118968009068470846655189179355813197419649410597676772501693174750806345200078337453613084604307997470342721625808657569280789417745786408616220296941564905011270482213066698791737530192086537391775977782329696036236260698094036783049045757327008137162944275580897698505727163924692403717263816144725899052157063192027312337300974049892673459724837021816248313353587941686008674435131902414321562075411732952245727645616334644882772349169076061506772261339963815205898234317289777793613927543996346822460137351731424176300096145947498171902320321826244962008365106987187249331237675585890586879987615056272912368034479220637837216000693392605020022906751001593077993714469069491266921552085785976888130625605922985811062711034715539448918724150402067375428133566590519276405833743956366106529580445207304126244386412280978374327476922865492466221201784861806147196474121463288387218144366343974565256909550701618109069874709576707640710107578594319585506897566227875738708743784596890237145751778659649884244277233091206311257395906904314362484438770024195414043825257970732231203844791001742173989898538243578424781531196592140513673643204187801647509486908268321042525697797963486390793825098025729642492863303194831391940621334611542020843400993931669279527576699759950387687563332757931413122166471866229416385937075898501093577969517801501613481967020304861356847219032318634477056126921994682122602533110934287811818805156681316024870790044872525196251945166436683501485309626195227620469286726980689658791013582802534825099848971704647920409361549235759731050018005871730941323103164511110250398381136827661441195742090907261061483203738733831953281751298414787461242294287994843814641125124633266192479995502161622020665106783248960687902077217088485940090862014764443791963803290862521605013410632876385829843918740732976529835690534043744457880054133958087668460091280390312691658158332825819494203423317003704849636699776384991698330795119694647985075438044130758090063201784658745274826330316199645366302892370774248597185166462834505105544646783920518052815354832610539658416805381247585906434714144906125279221479851511260455320456232164747419271331856472544310298481479012476487804224176745637513958125390178776146008071690855088708245583069056682573124227750429857508602218022353667092839567833925156185006167903053590849279023158737815180875766762710580495243048412842739055110858274699346255554702922774270637216822810167035348448587615071603733394057274272058984603147771362990673479503726427371373309065454139267127949786225023415778808403213125469220293385361571975348684132359159075598205956452390046704564715122634522825309764723223470585003140154432194588445298580169404349778269596709993213184111100346268688381554360149441393350953862157884152630882601469404124784273056310549495968818637462403918364157655157697077327371165205377673091332014389844346002758347930423383965714983398883973873590595291740426490092425144849569916679094558998775143673728765350738190765563024383378280735023957531703978008490369836913510397589193874601606920459168714500370662860989979403845955630574768171765110748412802909440806245990014829810699792587375307247318057786312553848603196104995452005276428049302984206558252219342402771575937510130350643125152992772739540056066873064685414648615826227701840978630925137401250504693795141335269667907574956713827256033695213806331691173072283687395076898923075205270865772230374520771748920763519471728437353068028490519280922286792035782441184690874118887856774511301197696490654403181723983279342569717476535593559485107422007920761970885555948854371117511077635787426235146232814100926555473025234087342799762177136769860188012279131550364379964366617927986794116500447206151327250887366395736210527105322092396428276927895264377104288082671270636799692706706124503589936933634383083920701996330705055639742229122423358321960746096701461130736393322403149902380286808314017267437090428096774884528142351794052090370380192864346732849700561480340204892225244676315622907405514395959611039665217959302453938261411448403096385620865304144202791720235650255104453052759158780349166350559387109999474053501794583487024513533812944816505907140128222651402894424753593836227251039647840159598404300275226427081582464420504148283029393960598200888463737795348002009239835266759236047818218281027738047377047860818626226270942821385775737903018323344212685226308710283204057565297658093008142957946872582259933896047452369408023560400481546912395523172010877352027686446712366751235481468926974011031646442659853692950401596662165282489272831918252879324996739493398717988958500997371948912866555848054589766390691705973277073700382158221836001819286779374751016927763412561775081796554536418104786137407735303029596104950685818860982844277915137655044711500726939240013656942728505921063013076557819519425081495273974962219759655505656916432042997844239853700273727534587651359984658371667679984966048564081830518091588534719543650192994810218334548666510114714743753950418057991266455938429009398041168080322773101015966952075817148459499512343804321902223781956107114237564590987218751315549004747220416112979697179578925060605520266608703973519765228288347870872036216328617413225772519913919745918417739326360654837508416083388977322290693368619556452007875033608273193761711698854340045273868279238487091680750988119724250633774490136193072691190700678687998271814267452157790346509114352294774266404659265051432151611076321165354227188568571647960901608511899083100545864286514600999920838356484054397921650592206992845616575250092937066375119200622933300425020664117938804443606476114898162020965346514311393789010164021616544598624721572040383254411707444261062849718490965596224152749881782981117866830008975457436054259318392372675723927527488878208506376208545012828594539175341593033561587785298344307129287971501310986711564554808871644808719352309909407072377103104123783354564660456713551857159023606593461397894874605510444924162368643999862119561056803061147444560708405639136543387011152909737353984190447351082407099356489733877360028723585012762921114530163921881594825168280376368794431860482784211241051047077585935383387018939047575899046139831680589118814804800446319240355902082975626137337137789987068608675640721697624855559631683330128811322989137696076539946523311183736472099096930963806819720280023443966834404752280765802031579744307846400830243551195032431045265745206133197479274446332692301188995545037914918014102271453759142664011530245392106310587997243015578344567334560111468483841791521905810914482652146224215123288387160438552683659900050791532235212924397713849545480542091935480569505484308283726749621648247304441090746978106044542780122675833640262628339150796466563208327059467999355729229091449022258642096675715457943170925325900121843740447908375173260054685775620908549601248865896835651122194408143227813721582365179441952218057482347656265562703263723750573489591467196211396737738738217109166257101567531955717000160417399660243989468959879825191724949646221028541802778528162471134813364739310757708323827649128528506841070121849564776012767342398358906689094753667904485020794486461141679449303784014079497318491196085793571987104065745958206576367564195840344736486849180868312714758538480289147252376671740713875073160642644465944796283615352259692643917957614012525193560301935604549760645536557867425283810665375411712426500318265820286923030481884099825266551980720421298771006775416216191612856113660283926388459516931539611511276016431341531135427086924542021124497401192954782097695146319923464436389579622122617747254470351988199607458110551401830156552519705791493993342330482057182667121878468966230419207938586407361178465693371447702141561772746865981614050859920860551655487727132522307895173232562781808045560674548748016153436642301776209271124294780279339992060269460764499760491813074604911975412101869417027171376103236342291797062531655352498426460969359396241840941271772998029693909482888679974407921178065211128591227988677246132288389489415082704243924481400726468691668323793973232618337110142489042693831219146029532596295854865325442216874792828789040415936428476531543985012844230712584529539889106103004290084052170184890746439839408409214658472752243715493789547043910307819519806947839512127840632139613702206886406875562641534268350940045454491456390796407981594639139514648292557156636179702980793989362879148172390361346864553047423208037376293396485116594111606833168256229861477210024008463309100413938423736776232743933365448778611541412970469680921359966625082580996448109800260854695396787535063959946658123507621834099534789457791484965864779932209217068370307641877995573725027263682764087838116522121096474132046416299039599696695604381919807584463399597303501101776216256498650676614999426358379799015862306106103684563521608046353806114004360883755045990262330491144889035798061231209934905302739577128060087390287044795024870740641530799280405655138186440526772879961214781522247484949962685242405927717831616073028250960574382128997041646391006111428571818869742594689333538608068608906343936526803420751899096488123805377038391340731978310045983490022961086102588648165133638098870150320265190266235754341726159226512004706075944027204713867644494966190331606559763471326502993591378688100904263371057438766354619565926945560357766970121585383588810323621662948139800274159625126274204726053618687367732278564549288514140020366961741844888875289145800319486066880391046222927731689388258284784809891093611680543518999849506894423269067113688333357623084080717183874964187007167114615356707952092102781992018551227499646319382722283796775092477922144893446539911977222760241876371010339987950290253776207740344280390515450469430313398741776112100396124716197023499671140880969402073051878092993612527522403408970830381314058914299370222266173833645653771375319393191452621610195387456623256210255271180555048520547743266521091761164787617658721793302249925181363338562992420231132267189618346956153042126809843969491900549903016770286207875516941539320843919376204649100007296122392477603748724148512513152322242766171734608292601352671069484702359451215666956534526236162567033868797561957448421677157048796003516437380009880966273071119986838304234235866263848200132399077375694502278326605831188044711300758811846341960688405899986278280030538656589282560071752253806304866401357552905966785828727446534892810426601012307201989697250959221900087568303631379075589417131600852286147340925731851912654708192384808361853081176639747857147609745340333748694698438259163094259410481325813238074733608425776557087701476841540803442014961655684265473942696850687611915483953196800476161946473992607607705368588260304520845870864196514945697948582244851274543998668340118319654563080363976755395028873203830963711421069378370237053830277277773274742113306488065811416487150751641391545320086012393248802362699010045872151115254339110266001146605270302332334432964165839270207215980781831006627048636871438939969306232919212501054425766292764695679167187768782307505745715497908889251712612105086773836921153424227469622339797908945400667789845091596771892614633659875869403771756690904783278791852730653447425182484095258847451763790542369033291073755881883593858707943583072226596881803365899591210956857776807436655520221418560960689338502408788506200868653005790395661309544697936190739685806842811991704658035617013783709496439124750416589573725218692444846820665660310547349911078075139735391566990377428465191755037132113028804596416547043879170465523677566718042882039502921836109618608651235379423489774064194800145361142649234752658924465828925680819395201551816446763693344509061888789523747096283683253835850247941123154481209356947382388382933554756338702106593155790036019414633183916102780028812529960195184569438044685101387202679583089093146675700168668586857153137046054753799942505408577788699241376604819291919550759207676131733732210420170139673190581272133971961272907148498591015352556659250529564234247425254475341505835933815998390097096636424524181911635862804358975659639494068167174936236944877851733408013907991732873147664244249480391147179012734956240473654967191023527596615503432351238356805685696671514786823698724120556826807184308425848920641767607028059900745337972277257539808276381659100435374035699761402613616047693764021870484914021559996728121921437698704108887090200834482982727218368725138607986082847454795697878281460834779433563101645631884614831436493087592886861031727766126729362941850257193222960196103357317644792255640605878961959743490321132926947367908758587040779596446477655360181986335052387464184639805083747589438783262252204515541567109642038408345043183447976667229991789737674503147133707096192197882685446759188672843317303874481192519480089100229694778383567961908681382071022992120081672195079129358678583583937954234589028323933553821062512142098707018470075949831037666665910257109064889054702878233441744356210009203562618626959696019480990795615626275662450524019022760937435786787381268535914988360889935407988392402856220968962844953031330338254941279325800590131526074789696381858244851720841377912892505941000669221571153629640338359692949390141761922491064192922271764906451192871620682557008213166957801124100847311817079521780031371657322213517206518307709132379432612128529767877895962701009821210322149231340015538128078955976672973799573194490251102008345177554972463073405229732046182578189787825414471307266185970998549106369197852254426200053962336874716429015400591537829572654034700462211892035930578115721571632782343153815289687660333804093100642069087195498520614999503056442900659446767287720989525150533132100253846463350766714512723861850504507677734167186642911077159091853477693463700502286725992303661505140875794974650841869080770956522001477012600316035234354827000453477655520414153432755282492715756359267278816713192971492951907599953224736226924671091653067684528545643239818696628686646303146731426475456337418943869988234629562476534061786398416220907241833997552738446183808048640251466439689242725166899334804498850455214074091577370887467969551554007780217691981310733313240639151141294239946645955045211334983207443092129396550466832860352567669702362918330658652043812771132714642161188275415517321168985296567107713178363843689804709236213949795097635395454829756210620847174679649429455557261263360488831226991685735006436993228535811829523472366279982498915826715253719585612622763123875441582856094487442462673957222704429324638748773095978758514743504285051842874668532384007875545756995342929782764247322775187003460022833902924627714406701034751110071927612321940963190114277662663543845922233586764724708634272247201611363222900049990613422835687321769886507310883489645977273970314904102178798359974202091946501255191715642948591017707914085280423233618169036232664335128659433185420691398953728548645269074084541587511319074434526545494561315867919395069123814434385924585194896190977671724515168409661089328119359504511760692208083911203656602698094416981819705750485657219335225518739443736279976265591969413250243010739016966580003546577363143559007248125511063499681248373456870796566502724893986744781298587589221293036354460622114814755067805953758077068452365887497077775807432290077690158985077774706974308771440899467624980067560579303277098404768867879122781975584962123395223344544628463034272699827900843371678607524850789906388408933728300154227021223718181856457642890894265201164025258348436047964025549339150659174110191033704235930339866711503970631699843929241051936222805679540798807337266360392689113148830836672783674011588484916814340813450326970968921052476428405477526538812229223793612641910589299409702322697263637516047988824932047303865770084958441302291829949229345929642847190640104407369555080048582225598096738818531772857133135716794339198736915505451207387354327189949495527582079982876300604974332816820258423892498904164447829228453848299559886724373014228739415937783213742172686774431698784004849949211634874955299621543125333813992839071628124988240625872669924405867504492037741072151861540155868452077667898946321244532712333893560486608817013994165315003859302629722890335485336143863192211807367598292330886057822481247648655615451455452091950984667344109466231681273720326841815936019571148196370329235459772455365325404441408698063253018627440445343268375735443575326321188989516786810286658516286697276486374870056379527336607924108641674454733752236718565741164395897354565233902229245047891983435372519436465775639048123411932971978224248876613176474643317851949846626149073518760653885533387236800359406430207489029107329162196857484646697766259953902190484353750933263643204231750258194224368685066812510658254172959240556269470112683459500856161486824929065331382332682573028059923453272704681983802171135932073217334832664100529797005794198067873104962602249611998423554144173648387578764429244308891518001431036393517653486308830738118488938074781691913997006528849850169882575467334020648886200398462763847564039452270357714588898137072196014076200762624605789640687722271156650264061901441725468326040990027334274388613644811217307525223655865794882725995165886976614152439293756945681769477119421359757261927849673336398020260441822120269562042008898869578161658134340037834998412804529211090589745569231458355532413699698882158064822622527313050917239203928845173512446288746477900863677777974151858617343981362993193176067107315280647342867662410266283359491511264928507287412526370566881831677447263303852034008618297297769316281091649479408511915948910232599771390061364291134501072405349797304742280071412810327678889377511518755157075640826591864079600212368267575134299006588117776556103154508620965926473783811579200779759496595396935446115658725440170358762333166994273381137222141816604638897326758697836969558358103116213382457442824508272743539497352832754692960101808408713504431079805776399320994827753158083922218339878352299249179173524948494539863825637054595964923169055493120414447743693787136329098161808575478020327537700653229375824286847170452407838416970341538079188568455896778421923995521573648667616783498205266196521411803820847542745928774334875645621640219941189758749385506904264080177891913897497713805256855923090907167140811556467100826018454342204494034056226742787545689972975765663464856665846234258857696820961562765974663812344910747929430599676724572888536643037560318475773081906667305271770402046091735470508259135012316153266373585783514226255939107511059359216645074513780695556657496874744025652108848022645795786419595921690799886169307962657898598504347009533246870668524063145932840372962557495897247441337361635529093211954024244391466045570832721604508367757024164022152743545558320835322173717819968028553007881734244700461580153932176400693718911460289285425518475355317777115596802222658956253113756125450203933048059866668650141220922731535842401144054682303239288863738127286167649167829716190251951360405432147946000671352179705938414698101693292390138083442027622455678339164747023194576525641268327557280384780538995704861035199628741125239492001723879122856222923496981761054562743714839306651002967726696710746222837822717096030916344017187266615831224389145600924852590502625074508016440956809996213461070688287619225138462412426878534200792297612804223648172587209880012821857619790620233022649982995290270840254907388730561226177832091350928281212967079090636655094116817534530219546980188579753564934426061030442341656744780692264959198032475650256576958398995897430271072766622273689091228179558641639996011722389019829521727716790857598968260896086791247249081885695873814975186596345111558381130993153012055717840018584194655915138404360507671692996111147809657305298989044208732360220879396856962577779707468666901864081990202062698978336994140075726157990439361872191953271613829312542715581385177927731883898807343054424741199524859892667683049864027020228305338878147921494135219043103843938725547658613058037470975196609902289906485445331487548708318976205277948979591991083854192442036250493490553792023063808165969563756809276146451384304247326702800103461004665373477309592923410041372066897503761386851772466772456281802996309136046494646064436019750702445140745858242951245564926085096759409045656951870197599742985871673477900584669286820760092128935006870375368573740196903520880958941646079699746251805646822088856389497626763856322478503534070359861257365215253101578025523953659458557470748477141285034549901232309294070338633555331023454160116548116177108158813803978137598004556180522997846539505783073476609262117176721900432875608252373590926042316008931896296312862012178166126719035867606801750612795717529099778721424006838007722905144135627466349859924397097184843362832236490279903222185137032178704995791753783549928768555731898773485472098122499222805148780139869769251846844110684823595012419308355658745376816339182340740655064876201492166801171423558591180651326357594006422794595852041719276413341740492590180876285097003170745516906415263572800967456618821683694082290431438963090384209329093773500579417155762831224259109227876837586204422947543577671382145757525731446545332642226778198667346416184819689110345305158117201088616486072894747161489495245127813961343625653921294622017048417335469293461187137828554768436778170276791060827792057610783497694692342241714433228276524658911492261269879545312799649271186797382844879559088186819347333867653338132495264288177406194635531526244402273146263942721695159166824667877089780857815089534317880308715017749162104197659951716281851496194695981070649621090344750655003098396481225114639329804423707413211964194331176160393464930297343134340821734859449869475916969071774503856718620868860382098711114220974220972168153806849187566560926968042530955614079834913080206541050017027705137897360924136713226784050264226443454098295289128631106999262045878159926724131460523474105229057275729430621533973308612966418067630926603044136681644282698873111927374379345657227202955671452750352633085404858850239959974808234168051223242914577654940186913635659187158708172231720062321509557840914145843494495611850955091683834007588254757887838692655891747637250002451225448584310008198156850311171331407242565133656918380950465068066566013537506553192428707859748924078180240700232918709479218455649211072037936851626887305474712481138512008157794003347245283437145856445545798285642321505473544946541727780836451401559691656164105164197268792109601070197043975804635049340518600482635519597430492503842191035456341495090025293768141459861105322984812635308860986752714426271452056770219300108975533001565987790553053704277853389587998970019213576302161172972533473616388186938434887465528174215304068442013118768228997875874133187903892617944508212492711136471092658062620946511334821600119942872285063394865176739798634563429040638371744111858719389159905440625613582247584980539549685818861618110384019910212151194113137867339666754625020925779785300909619841880518273471661343962768408543680394038575592102404409873621294347590291938192181470049509974151900994678405526888434435967074791873883467295849674904437785219530297333348346419548017611781793076999138537827599541129129452874756266374029774169715492636618499089967639209708605260068311704987019812633288789039844182125473589999504006733191040071738353253958408271067150933558897780132794151314634354644874213507254646244349183670145416907298221922529437224407243098373774049640719996028667951079205850706575613029987974185124504943929734949776572076485741419215904776826393169665030038023666507716169444134641816359194475583723960197386340468885200018386340687221533477951967082485058844790745506217485843295661143701728635521446482575263806503260506092008675571590195176478827190214536884056925235468457567985366257161757245566046808647227158926526284460013882980684782811336990923010813140189421402758603410637171368821197090389474059271286029774307771142556769171691112904018191442676409407429440156700621669006003514623191392083390920221540668927149753909535005127685590107274860466789255406311417634873631252354036943513303094413813858321911884177495888589056630436550977350548620854989683042744289575328704266096175071631910549830891400275981558175972168096838820222450793869848134563288468811895248544281460961606422209811250954593735820619041464594820051284776053026022762786163502171918868417480707383047952137355511811413662332114689394844131403666365530936035796200357746426914272085543926613527632726248326684007212634204043869295023795215826230403517943648317434926619865733496591088959526375296111279364830871659397013795605159981872009990676947321791031195620608827037302076027664139451826264956332176706939532471726502335506280213232710883060090495575285036384999348725308008331076889595032122043797264486211710140693622363050950454494471489427476068676687379008411793931957333613360751787390244360911483007629438202183569566107281635154327018986569305712719840481999158011296167995603202233766051462320194260003714611159119742633479345602890711442514780279710995567672043414074079265967495754458514641229849355933684809316254202880751328067636168027858373445131338710738484753031733485544519857010059718030608460032526539930160760289453510365332957626737464798766810955141624481677849506265875325303570669784782005911839524221458891580339687809708638851512181659980815513428296224566017377135927131723355175833960634867804014203624822013362418156767875613128401947615023233520279842055492588868565984643436277000914398939747382473021236701712287618884587818946073710946635082268570024685155033173688584793345751102463293182575611724690058372462540794968151353090508227028719139406596914157791958029491351772387535240502556143993549019879169977526346080391928612651270419261397711255424225980635845395642798830152205583720708417073103503078878783483688804914026491752667893453115164961850572193962367223744647235304781843527872052950949030289020462330048783229984701646749649374851091373625162687259402844463157325263687906997716026232563833584637105539040555322810550778811435081328406449363924977568854838363099056298493185836420243367491302156070783583112936392577192104723255641271592810265344532945494433849804057070483447312052803196043633930727380238086889211730829958854622521390069736878380383924753665926509217152172007432887327785282650062817728157031044444828363921385906201913545813574078358321417630007481270517440933300394939172268402294446511260428597298528926444953201008030483184933568833145246488417412234646520000232559840222847521056689436233193932519297325032544541167428040975953002788445722921304229463991452947419506837579503261629249878095490815948428876275333145792795967008762892726114729893468651261041416855061230572452122707993471849659605562933964838982831354695950708550090926967221413296622763347242790066122366391290620002721865305039467396774944495577080266527927586347494793243177345218218155495954145882635839138094641379052994514320983838314506697018784032012142133844118633719089281091942229127980044876608647251216828430219704666292764148815794987045518046845991313949575331680364473180547709470140919056316139582412962803397535218684934229584388000973802054703711086929130581914262123768310706945793946099360473812207864699554999944600112770221323262064715465140507442394548717854822053198450494751632665072102110910556388364458785251706359575496154334273535644256210014198943699374083428275721088553986840521348402564135018832349558356836691774964710999692773548538643589361154477458980451872290882669850447822243279114635910806879994401789493820992532192501912315625266422337755130460667680005084547664294405497415162113134528962276076698450376833543469153613226601832724560573718562572302822408952518336717364093046033298920121361199707714464733313795787127820634874290892514802352643479793191618159013866441815791945105103336405400209313238121555399773063598056887817618299464426465180167492248887169381608271078371718697369576387029864749826407888833759794164447073230779172407664483714550174252875246731267692317475064942923596396964696070268892130158177483310330607105943079516321059431760525365155131526241779403587571890772359124107329423766267098042820412569490248556616843257817115726628295304716142685823111070094880258893750233606785593214342113028725323482638125083154495430667279727805455551281783562793943819961879185096724101582032265011792851565161835920219242642880615453708533495521516530606364614618456555416196532337986054635636026705287089947132520413382312116744980249002614382648554885484680728808709717851123616460184422946681509819729563646297239555544870024155432720669147213351586208599183144100114025043534554055354468396056593389524378877286012112522016283400004701977324625009748953194225382408490536914659250401654677040910813418700069722094551503877983053163116673074178693116670181761798383478987937763682621573330544937534173929408693590760654517996059125979097351221689300947992509774433152132363315895269319072167501549468880199176144206663451821751013191632264354126233815889993606285637928514583962545640988828150222846496020422938441953852406089496866902922317819501387046606323159832667245457965003899366388539779340518082154957705382874136410171823572735563565578466131650014705432049516070999767393139509186658511306193491528969842754051770952674294885022411512369717726349480829620695624287883106497824881296906995554159929075419870339257177821985649442084661628076296663493549647586214065907540902045499663811978947425445171810273691886869680582855261366212074871518260047412777039636980486353681343202018100401229197906672563973097721608040078879735077591530317843651481514253400285747481734396012731467057505573878312777707447989887895022870307321188757385007087102686592208443444190324122322074556731904839934556710413025912934617050626835551599773334743811035252316202876008342737789896970361143010561572121368158210130201405311427391362573674694446634308530326847276437907762958580381914329848397957379018332280640906975810170028184024519697192002993027843605346403748512047700193305978971345087360559750808776886633680844004009377104564464280623610336418942679586604836833435382322477477416786270718559070316448908911291422840204382992784501396369776876282960885428203754972757999883500432425655356052994089121726440354296750589631447516776232935118048003861693955468087920572874550853669613079474091116562206075770573105792664895076731666953611907089456678166221177827754522626546700416322714379534762640494620831516402070083618259491488524529017835117786814275403977479004628358911805554467510197983497230365049371285038885111055943823321259639357326169258894646528588169031340535735780251613355325606080688973144459600810042385407894408969418916227726882486830092595844124916570706900889630802914531574195385780399992811713471390719969197694241530947718880940124722549873882871509152266545691955920157762765920668625067415525392260731813911406781621572075451460051846332229735155890595269282328497924497892533592688640299097809661324110986043089145385634110744224936631334505425973987031893500997377196708749247707601355489248703915918588637432278993503945688565048033183289134838785449541459301148175699723876400416744576281241892210458032560846398789118859484781710568857605257660208732253496861675699780890977179239956332083587365201764209899015475526079158488477888094669092392518716192952699338485810024518197686382966965317997242912584524106747244998012706152653982357944270655873431102939070321566417109883311478010753105573908323657134528430661988434882931362166623482827381545971758773745654171247006218316138180911093451549970847347202932621959612309857305316971494687732745497693485061663085859779105591893404915356796140290179732307782148556820772214526203680829832891608780171962240816569514756297693281084549045685452153814044955021821104140353947847896117335500883367721751946035896462903323942757715738622732973284546094723741591220673887627604509815005716402803387226825757553275563027824545386825502110445278114726051593233774760363269477644411227489102056480925620584211286609137184863689660138852034175674667033375231448641118612882098513199032297794046206479050146995681957710430535025941592738483114333543515981527689151629543738037283929880164564028142843930410572337133242512798815278925405853736713187131408710449636637447248882677175671382227413766345130692932911376057157976096303019648451338806202156222661220710533273486911942742587052010837451743809838292066612970883779216328904316125775604775082574503123345425607152937464072182486339416926416265426525235573363266715888884600851983408635924467645565297055629841023917163342629997403292877466940329263389384992898543818351888113686833412184449389339205937837076612695529671365433767659282977948270781614822432891364371812255891877182828314325952070058993433871927900558612344827533860559857909977367883570521363726852184164216998774473945394865731882361135917799755727122672785656936101389512523576567877390908820795057235708275068192346514508349899415234118311391866020725264828305167575442856675739237201829383395893233516941300364716971099800041453606528700086538757610023513281810147819810541563973523451194245164821346669807308921038891395417072108805778703713475374282587886981106122895998668082948963795971106648767423953019370680679882633395311318553252331401957558179033252448756220476443253964295986139360993558077467280035092672170936057447969789642473630958362137504311225246017869651436871726135450265075962368631183797071996869175129369801037274161627563980503257038074893696804754072855065663491374262868620237639168611167464512256471754012343315061140606386492170856585436208611680682079303865812804600728350936707584416348246583126615068425617793642543253841534935200690523023943710371192984691369147545540376837768635195919324861240435378423422026379848285275507502026854988587125553803265441410453657781836005559737973646641497882134324649957717130267519674920151219241297214824951333979885194541600409050102797598082692140641648339949363813555985130515454941716361005620365850001687402296739555320020280123287625793120857354070412690836951875220513304660867703862266599856253046076159736357773913475572720625734953848340659966983489742268762081179696696561878323221706568862218804860199560943021353550361382569599560600064221506200660263626543328231095467869573383347465527440793748709390060034361098789698537970001695215584209873163927931327953436507268099716442496895239863407809237185692950415417704997468960480315572779893911996174903614665214492543713500490356899171069616039609637025366486187199885269948793197531621059517626151145316454502085074128213562809820522974678312547999110567649866574918574097853695185089131783223141375174738368827571481668819250930121041934549918335431779164331574959562860696737361698262495460457633245754188909639942981735167879277999764653315409605344017579594933809320860422413829858824759941781943628839681153681358220693083070765984135344862027835027770982642189460117325936490798414684551786135099550792650318610917470025173246939106458609771636991539130972953866313342242723367782473247254046007453906055041075769596238433146092161823401353028408113910127860760481764680965749738121751891782777420973188109313446041862571926228305774278872014641734514604442429157218517230095352540922086772367528755030154017128169953385970834771399168207991104241830911039589563133420356179123693573149167186563403465678554984379468319270103769070756035730713595633368858326025294696280476604524789953861014504713692320627763212968596681423911452150795202248336768098893712463299401392732310759859152912458420977898553236343406941491894052903867380727582017930761160050259578667365041923769438822873954058320628364651276134444040209897086266318166603968644994528569231420485934350223231710041513414216242500540488915534563945427290258595444348401151036270723498450543813875444774885987036768415768710745334142266718688365570526544774571809186151075079954182512694029283593121132049380449042065056582429264260421090175555003001692514182081004773084667923249207122206468118027904476114734752328057210692196163315150755989881316824229485117808145616637517169347690385539030619363431962918443466271133066048511772417276631565677893438426991664966129096227453327894479780243233966785815745335830948691955784811669187397401946679588386824196620720819486718750163231297056245043867085875687529578897663564898222863743112188919653293337884227087887357689468064953070093909539893091783540304073649477606025934786451218101244313901760356933206635744563034153446617911006936692258879266362285050286945924400504891315332274187795066851797684724561817149885517167172746431811800953748823905721336714613374860379005268858923418511353905871976400468383968602085577583610890157739641024985711119511532587969906190441030003082153113321081274733667252609067957875570815435749774788902347669137707978284772414195158047141107565111564373661227237714609893570877657863796107340954550781120193283621673241530567224468897864470742476405004013726940011907736212001546484051367419591184646817750057591460110813164212415214652046666126987521518556385813293024522220636091837325169977564713813423043984081498766791728600555106270539306379185038393565872795068026716925825729785702328077940732356611487194432614723645494654071837660495759709182620687680379777662008735167795452206149051923088486912442261458828502412312316864315560155650846304647308056268726482020612662898486595196932229563819328036556224222016835191680701749503182913912846829809305976353636897090280450198878406584566048129900425602767351664966990778108540942278104772492118141260475782992469475515728882049027455441234358021539930425500002581970697778398706337600048873531352593222633517208264301214602356817172472164849545916907739515104282916122012032422398140209769658935978552476279111538292147267622920747084937781637722992694990164459196733493705599753624700271394895710205692574795160674880783859840349381334414714312426996905337024289979312766205632385349355341881353797727411464032194174435731417842119037313705510631482800048131648225362863454603037490412252455665312978087688180725499147942340505327719338529693336244945320711526339821002763772968453705779275923126276226293153265532226229209002864910266796216373566839200805701861744210245427245143790907956120702855982903635147744141336261358758298678308877690080255452993766868887322828836433248408542719179292710716015531925977351630387165473524737056594254820774615709063184900652844837085618362731901860239097373059374834222753283508070285191864632922671022140382362815533022009331402625003425138108867401687558352849296809083354639829285448821292814094791232597094049053306506060958553676503469958784563569837074071764482546322886823484173160016647225600571080588066242991742045341938274881496696194498361082182606629299622212351579056917825022022298465692049771622000661786346286659192491302692171415499574784138776555265085395652044564190220552216045905334779437137142126069760012396237591455192181045715995733416320778594181740676224436214648740333243581155794692405204700602625446727825137460473886586706970188108382592930398155861569825689239144554875031831014432886306069981420074388762911032379376841543507652688613052497752085413342599735294595803117696269553551856974577739703752808470522599911637256631216877991506661005022895403978794488194321534217338526127941311077097934129567619352816227698317302986641955034246589049624520873943365851269557196949314694839890942840388638278892919667146235687945013850830485126999512968185198236242909933291267940033210287346263304174425519012402618003349541700852397734831172873092400140579172640211440006137933849570545598657677960441643888084854031893080732581413199779964048210957191042810646389565654747464366265824744960715133397505368192884859505693543044453655042629793672705320440275410812115693347495627904506929132751251045734332474756620546083579258319934602806995325127833993711581134588948955641694537884081175961828874942965623913983635399206145265443241602312264901284936238104799429884048991942511072118795867086980241584612005092837177226392563922219103223105120569537813197041569073868025551709533035176980367236939606931940401953558256337468531924207125634725789838520273845350724559053970655597378440974941494521716320288614154238715747209479037199008053764260674796446154300410769976950220804503035862805320624015069355673383517724101624392292185037425666278167158755290158619844169181932938055672495118744826111577840713326348289770292371651254472983373344846107893541117506708398572291554458196269698334010577278209630888482882364892089472726927326695973212208441647923396081032162271504898936582204322173783229054345686139334492221463032628272144047327700562870370757107040727037584566612911408070540908239003814208762972868336824568761037900929145247932898046212315199703097526980341175222706148535527684315549049995456913903217196596444678239446844629638173879629505277238050948137418576044262344834247056044349659196347584490613671717692497700847553756715807146428682693415231594011983833105629162776477038949012897138857568542561827448028900579320472711188474285754487400381798371254991995489796803691108679968195125956723482633040867784371026476055177266100088575668459655468834536728679347322437438671040390621104957742917280199329717269543644367764575660270208797034719874315650555913178620593942044621224856863651874250537547579590039905314600585476457393655620223675219426246536813168127666728535801103883664608872369570373863194509360141532330478849205428339045946226459625191327406128582812898903217591890993308816120901147885829108729399540779560796137575128808990804274479549750498173669304857434789353676849752228192864592031857331182595948450680707904606918051877877647014731396003558699103897270905029813305566923600504431435793932148953420825786387105689769725689866703446398748497015942204520568395897825519599025955214449776157858462746740388741165900971111407932593065519470518130048173046477566987781004523170287118971079122786538424657715531212547567594026746543395979774782312981196441317876518587064724648070173341237998508061827457526764621805490858750939863142147889128665559548981400019510306232980716117136013380074852803348519390873587933410062249654299672459588540849954225820803715153030169943908040614956696936291851833981107684131245952297627712479714551248835271347946962203477630273160413862088891453440563336578271708431374848949173782933802629547435008921873977172141658320740123784066888228161483350537574790917883232549929377616678312197115257874235069939204388581364680222680491967894360537610417464378941987523978170002447279868513181291124156418886068304363077592834992209122018372461859412575254623285347087957295049330383397702757008311720579374265079343643875021966847789650059711329162155522172211380950089253765953744331670447820879641885891440550571648524986385908795535666652154085703091852570755148488697018482698253020450872307518125676357181974809408319760900762949176230425560299786063585257325080699801430021359553563532320814631750686418908779223060435101897657250178286568838097873662305209232749257219636595941904859666851939049865772765320106818766352472153913744444126406013050240220087823733865887289831764907400497891474941318263895275963317337176591264808758451758272604684227822550222205761602097715104515968828352385213545413999609580104603943756080015616077839880443402199001017346306944241348965103094456355913213727307000510666336066247970125259237848850292490166982527060644431744523216033732568630822047242839260423219097572630798596313759565829044089300380530134015110556080689914954296201660964045096449547383845049463639875222872602963882302472622960106378181856269259241637069029708244490302007057041218620282922129676626046229703234250897013180261582235929791084675178085010927902469848603594103252730821788279534776138481775237704351417416743435200141411860954629519874126707233427858664661011333966734976050083416916078945263543978085384688200022589820195032745656016287722374896790583032892737424014019012365150560945950773907209278559587635303565897725291787632454755197458848056033568026707128256433965721377074768435473723659082346972342496568862331752912370150272459766786566072010526676810233720940251000408457797755346750127209535693878892385559009162995234982215533458801013976337317817101536235207275894026059477266040576059143508913929467824889077294674638252206326850083735493694927588388495806937133716546890104972933713832135691909640194380088341627914523906318710392573896043787141497382054871970212598465570057740734285690026928564409736428795500118961505663390451668954336239678849092455835158616677714462175530104629539475844327224809610080043925251982045851908286943092787861492023787190075863806960691802911300819202821703504785922857174304055724607446968407462553390922408969064551061813796338003014023320122176838994855599504429189491568615394080500147134735682813261730704867804648081941049366841278687787678478936248410830063726231106171249909848042185909068055705703228878173316710775102403310834794745323176352931455763413520574674011304499528851031642315860134015683085688351449783313185567450837983661531802044824043384843122611808803598012379629541097179718130507133144284794386464353939757153284474827510887544977372406331777875705868202860282027208193093396236401196249712084233704230160769841074550413581092008209037232219571745145743811721990599862363475443101047800536760099695330521977751186848822741224920831349241493370228218455900878252081252264259458704295162265019236297722632300608226312438927371202206341610824527598454195826391569079521068191084657760656801011379241948975810461250046254863079230273653101907656485598410075751304599861302971004156151832447947182791759081598397233975384584792817724874571816598057838250063373548601844256571813984611230903448289183454244040619175040404020178034091297220403271373417699706843750114504826287299979588372777876036064442386051796687176612204240352733914282135581303102094214927361605309738216151699424356553416845245446302205832184765283962180678465395421307568791085374649558288101889869959099194045762566012085987826517842342395505079507530457319665798820014886222819415183940397959211753589891128087554391187724789958296794764189834199283127004674528582475936053111718548973351217612029644132423032922243036100296669558255816145384079345907899088680325502016971649259684123347120396823875369294121606873659298578112495348624671380642719466495591305711382461425345199406733065881969482649468096881612602697227724193296482285992222879128478703440828168917185972176237804930401762069478270937606716757965062679567098574126013758677812821782451995212167961508349354868163778778204753790346163614404856988068352774395153042462612835398360872404465872421906424093044251430878819619809072374693358074850383157622743748363021200686534365834805269562684276019222891507754222325326383418705800104404989627809923533051248765488203360853097356950218683167069054353974923459748971899973698971817403427563208863935942678866930774601769823597416690966833359420285541723285866931926486506087090268073898320292945152586149407597099472307763334843766954358962703323189563754379570684564200939223648488326356179623858731429903588576996461154985432314933940058165314903600745728188982203161602245215225066736950823141752036345449713986530013497749555470989675859674895130364194452724851017526629157435538856043096525810727176077093467711261879006379088672780371152454822897741101975149417978051410237539467134933420986770506667241997032975831265984850519132577096064688834683526686634867631665391489906624714025076267386993993595377125563011736563704671674988933037825828906546940534876551758236456536755161522922380693875820388040287652101661068991132806192443859362824873404159951631223009696442078956613863196896205353230941701114400678656128710696550455553202900971530063245119762156125096911115481360615731794565691198840410929856407120381806982806052232994859340100086817503605663042453287749324211521934346997321855561723116431499218110188553857058436926301562837404789270103922282629439976537317619331925684121982109841586653110724803144099790788721416529356785871200485868438066525329516744675670081980972852962329287544417264785017956180897514817070397675721101439450899376420250415887064760383505224100138832451727331496469299806052433342791250838462759995139908060018033111080092922795743448882603723636213108727761082497644923011732543490996503110158710628008112712387681943917842285927202905891771527840208218152665406445938291630885973271428703648759506317521698271260543803394793445005799846697240245367850198637544573921347893035966984798148088070000783112241959973902333245783358561692063563248134485428187490869816564806511930355199481228497352078515427769372113703458304332847046093800389254645304268533984694244269205928342465934636411842409891381792837532747149254410485434190834640511280819126475223302355785587115316014932148588863612245217057259280627130463683338312767460001941572884477842069819490095852354750537868443879659856643554408198939416316343473827525645504373886467319774388021252187798307360489093510400662402321405645363114920329782238751650525334762210696070249805929284396772571358308778779178470103943077763785189354811094594828704439415120770471230852086787939618322516640147676293583709572323056734570606013258107690938164505389509825096357237662254802878593854484669880108198687854980558626081965223005634081437357193908706541563518342341620327802540509428793784702527609202403914879276434547457218461265115649930829282965249446355431978755143272330218316910015264471262109881979410450423108128344190295761438221632591840738426283409262883677257062120986565187914716816479587372301352269892336516817351111837750098416816209265290603931185581204515746914714924919603469866901688911283131037749937126440174051272604217079216696028543915331557903910110075152214135428420412851302514986408393825856434740416913916440392406757798413228407716051536708813719997383074188842774368377327408383065669488225238540319869379558264727695392215423004925301741362487482625774342733157824972612432378194216480924425185825380610002052864162370680680862856491211749229234136243547111522156597232252675803161558057466747495566661308597625816478261820181427121178112835963278797924149647277965175076904771555641243676695301465877062495167807233269132601824910389123634703302173790836847841191528682775623354200610180244739795225259833707382212934266202341730803549607546500331918781375199078185286654722461961429370514211688964133869893814565221875432433924339978463336168562116530319856283687202486092682435347392411183057033072535067056066862700850685451792602466041391594001494531465567400340418246656362754890046513762523613391357784805463107357179792887465611245891916875555587679617533089626309233224982393368807758685621375327555145985163555953558350083085485606769599694726983856142778431620171079124598329668878052321405466840174709254276730501620838320571537349097715467438407868801239868455283430976170062390923920921562051160157333099948113287312640053883889789157923303699485439550297582251648679344349459888072749651404369873001102945375817326889656492457677833276524697509819253247033099913641851250407298440213671645108391758629247865126005533142077800799825357909159619297910404950090162951511137851559924934961780681075185984922482185666755513835342833319328146472834854371880503796283060841531529724596253424570462898951899949315656202347031802369662882744353599637338501273060403451509585812214678184159636068416968407850211902064244063576897936216852469769975294018314362754325866276921232705970633148516375398541938072140456507686691313152381488684289313635568329452029347132739380625647018011195160106291444986807974873390766044891761334489423492693523909025621603887551674299460373720836796433419409801522086867343279588740353147501555466583876396249152967875115015253886161538364602740097667251263507014304377661213603492662942167337784311646167043927959066008888773778747119090541814904880445834928195768990559528117513700707537026466382108464077928040368288262676874472552486308005317768833215507939380493722190638908741334454320521429565392054800750461566449770100753196129663063649696838248091062604455577606683508955262234608523235092050688653730400866594348643970953072206879068992075735982854847718380157558479825821910422399006984563038565892735057112732083388074217281967905731815624148587286044123176645259416488028747997376366993173347569285982313079945422198571692020610231151684039099081405571401915450485847878440990458774589125653326825473682366738486830732757383608916597480750375976314050847682307387856455513150221152118396758508562124257636331422267066420019138435503713091357337489300868720863776790662319542162750245326191749750583775987582044394390617630744360331705536449981856688685030128758635559557159641232396471933168780746450749066779909159613111450138154641242262427707219743236235031922270527412612149758324417005873061684035054129195658762851637996331811072925558951512154958755882658551719130038294248733063400274374245669650293010363281422273568951721434596530329474665648636994118551589534865463239893482614123250448293888940832987482945964334457468228991292529429250050240787760207302012183433179051970748661189439490679385957894793639997038547309525200041996790324750517652694970251345208215796234285332254147096142417143909514858048126801100132478005401569174138646295595194167293158457414981366668717393953803742680967074022856240890763675928370075599614861246123218348996095929244370310147975748074489869884983405023975283185213284849871982857403743570313917005553705430814372249060461964831982521152381009387908851124808014602136534398439569107905703717767324208441189062722462632788054647183667699772113365501801371344533551786375160526025063825059906479499790974191492789711632200794214337723296694255491784288151370356399034227853001167467943440986459113676279607401826185338403733518819276436411917304001412991602148607643675301169219261422557598202721377117968366953758018724589681788851134765929471935526715793077519542468856143228726133011475779494036853529193292639451633535618240250480947206630191162285121488923358953838700470668647043774402774301511075575758487162671533530395798105538473576266340113972005657339009218910327022198013051886302687486738014024056831929695094365537196908087578612139275731449959801990896664046983354876271997712104190121412650788672956639889024331452492385422544145516057951138739091790043211609140569003068466066023289638840317896915272657860587124920412568838372602931227219119334252574071774526112926527426993804139357014135033991352540065965741662035850747245850341118767612769622580808081022037235398711692930251910106132142759665982039956660449445429928208488370179467864704764336648126002536795696054825338267691214244528758297494469591978116530264467125325765533526389807235007278360008433122343670681721759434060052931223404778355653322735724689999684296402154565723185461075106754832751089619489797114265482388460852120955748890465978688369146958729456304235139484724331913166362468590640997233228230089426308799649225743298598131137367870274398350636313298998029432175237703629994650750540548474358195453088417712836006975142275397072318970402625108610998960473006080212770275366673715587678531224708565695083814729150311236329854312846344981439992288102162649463840807188941649274598512207893502324674931313320162765237210308609674691371500963134437872072114565092963001056973323895770690997460963409971122828659368034822121386695830736229040440975206314599984618980667266957823762169298609862877553237001424759322330500695909080118443751491216836145232577037204779939785317413358214820890190473445479540717764401709738579731938345033634028721515703956222922128414213956482487656558978522466055162567632842586911473394045656918903691768432139725059919763659380467030613426604366827644128577162007525766675606032575821358378435332675391550257478036622864463517286977779048192985612857852297999901451031614712784651818418339709061655699337521984360276628921612993986940794085884176753948966163350508406802563670784376709687024182904951240515165362272310149383701049187385500829486070421741660173954503278203094360283929458503341905567915044980848033352245727733877939200069955937669768572647075779146504065125473792339417207674831433013765377708102153539151721804529580224057261812579674512574189249703141244976478442846007535078940920257995356439164784824076446142581118528575862992092287031440003683741087852742988819134962503529010608205071534851084994053106238986184075721656428442099620992821103987235972027725173532126154280552022895385669126787920108156248560109864889368572668984452344856945359914375058635987562262908764543212206907514231514307201839349364684292194782834648877721759072341906668698764997750711410904082369464648815513217273125119126050991444477554245313511100432178842982489167377104915893214426538612247902086725221642918711051918303899544935193020203061449580862201001258683701047616487892621633392862729352966965370751683836200943449453306168093689942069367771137653268297332327619217783638668752900619682337613102809291801019294971268159320385686464749514071167369540589531741562913395386936040880673674462187157364113211930171701755958800882246182999539720515628341301388116641544339869427122137036506973230707765940841400730917449129122923657547624845616263762227753686779328542281502267548196052708553477747472413904192501601633654295280583504869646880833315320734071774830299752589923127894696123039930820711373591712471022164794471260235210643529987796915667015122699258471165442304569144989436957410059011056060085857100344367314706329031817707276141681809061135856788538976324385230840632481802800554537948231011288356408004754154888972049728229232801712676955191913687153296618969409262058918650069531206959696683997695158829458940834646577056182010091675398354628005168146041815431747304458570965799356870210011065368349589976873751888605638359373826596995282669185851216994267792391680742295681385373588210363390966699933794076289638106239402147986967757172271573582421031075622142457174620993710414034760034425034112822427443883236749818884984680502142957794994657866293119455819474462936021703985258480232186890569062359227157049162255153386996629244858994873958046233252063081318549315565806899553068501882360054459785408322478998332918443617919041934898194963197140823452014724891673390660474441509047225165454184109407780705618858039702019395861780522183279903776679707882878189085988233031569263165538225787112352203290635866380458405263096434925677608055792353752759392511111288233745814123182997993567357834214743750175773320221689553578691752236262564562267613102946094168839701402429222463770200439025488123790334346196817315336636381700770954629125828730921695932568741434468726784985239170183386074805481335504214936621430684164541694933031232804036536810767457582861690797972201611487230324054553244198703518342275265735528299901224641129239513402667737029810544713246805275202894003464039840556727806079307438153372161827562779794236522124771536515354299243422956435136942830323523002845134240127571786543672641413049399606637764480779000247085428090087896000831702673269773477520501900482157799582037785839016721398060686006334678445836042870727770971820045414341833137181156675539364576316009438460536993820178625040633120109898284348874178308076027695398608365409430184999962725990262970748068235215385602494589048990782848215208063500490295105392629418273431977801402440758056072284732735904719348022050117540133966058211551487115439119430199394583876276516959519340460008959321561398486476465563011221535309937627515950400413681728994729297646137401403451404697005260096935213902024048077728468117828179738906197940493199707821051652645981449153245634896851866683826024430928937175043381020460852135613260896031873152342857022703361030858892621402289464493410807287140508951584253516347401902104807707504637272914292887201976470782851911260661153022105960633356795241711808103172027190857404982418256925803381229256077588195552538322736332275257362482592551574909930622185990853898166363858733871531056528041490368808542093730324299656572188482681392919243231123231803993061427161184889021131395625623324881074170403148869102913957108658643516910274068041580038268992493943117225014223071014897429366126482273388115019663711164027261662224270030512995233630206185204245264495749491861327136794970492330754380953976840061389262348956120404265465013526287135598940792047018983991332861692009610117662821405738550809848824260495881777695755120713212030285497617859104972366414412393797056103329459876506140588439391765422136568106226541003492318273951425997481365549421472277716930589296907099396632365071947429012350844348675464294721455964991813996864898755328158721301616123815066207164058379656955783968332354075942681745822506421882868453114981012095775769417746279443920995495952714746279035840917264810917983605606009324812994666762798916311863563144179404021518430595680018484574703903133379168810678356922568140047231534415617661950784757939078472480918092550106503107570495295436622822820667457168967997697303623486725743793062827742378113054185377212663268556588316290902769230332360768728618836407772736317742879578471725404865255194932338471322997963168781495295107848998234113880913938468607940410383645934918138227672180669570065941039247823113024723743915686827131287195794939732140169298886597961804600333697460971653772428836791545281533576522201634410334105544716032447907938603703005869765120751041571447643963436823979363437916385806553874501148163475581648732703968776485469497006040074731947971549353842275958984767797766268337084490196623247210674261016904526105161393283981040762870340959208421388852984400159030222508728644548159360480743956121560605762580531228777183466649434716182679444909984160950625819262697282158045002243199860303531302318570226732766088633260476941861158961381111290648658849124061785441118156738392843689926443076450267175286384525780288961023433268742669928085843591163327213433427138021297065921029229028145454097088719399283788596503385916658550889573676448960182111634393132510691004149887615557930390707517528633475440833991822945729538447704876022443626463743653651969378243857406702149496060889616694563646180404480949680150148739852731731205362514710347839698061396302191640458222327587012595986607659068288475967186348766457196343285897883116099310208959649196331278183458662279284038559277021631705974149947518064378631525974552821386998994668674802638560613723566285237308120704313933504635737949257750812249397166234833951817389901800819816086390478410461081457394852784862009340901710503581174343759083595342836485431375058169942039463333653886483173092509392106427608286995118328966732719216259479713703848469524235852970830118785911236733112951251958056022322561602900130609554955500300007481626435160384491359229486699632332884698350277705865311640367175159926157802853025289854152964957669142871591895734732461141984613316719108759571786499297050847171714647615355884819544926747998994794231748587245286792818536505726246895804470642198437985476075425100023869888312024955148899068360708225610329034761482740380408970028892323863889401673924588368615557538758526135255723592441308850855499341807697947379362531576741771460227516937576844644806416649005198199525770614738858135150523849311525535602253852195303200373521937048421995400623308557708676991797702419847627038538521344552979569507455554766494909633970016197227066939085639289723087143355005853462605294930119376881365614133962764563296514413992177512235821791226648086952031692540241967119628490505246693625731396739812604939378834164926317318397054027811711016597299678282877021078841538335546859072897548024114711425911609635811047470739920367093465907687469290809776483855863376996682005130374570187865220880961398545641375553455395793816430068710675164916924677186050414628827574545499131841788113878789005570637773248084958630276479285493142024033002372151680710425665355601635046535730868953643391799605159078450362483650629239676257220877774228783240279151904990907626381473485026066935751040943580545304893614658033793258024240148531333224139045774251817982591101701101815902681437381853325389938760837368683396930615934267070415379039738740764004872004263005045140435005931430959565700412374008545563470090099932076172840514632607836362530038756641525842356319074861751992590843851363214246645425627449324667963536025747703405463313515956705352991933240927886308229803319462059361166627334589121355932398704278774450133144096576586051672950438308737645339695603044264211957193199849024525274160092063696692431507842674646568249048725048848849396862388553438730940459539202681721368338854318000736885074547338130805475401695769904102848192955712845942949132939556067521681952629532352012336273709057421482465172494647151179344446517045175779493585633091643974167234882082267448539383569000808516362897303095551840922437778869140451383033503685536021728523270041392483059653490047759181160320111801605359187097001730926262348827113763839972522687669611398988141689433529107599339755429364758637161103742918044050275509880635989616727860957769276783595857911842825151446503174181927945088901781732041375731269488505141185656780362083855601370166037493776226953669452191338719615920093826992094741190883140263702837281660818522325989048074295842681230827290839466602067351980220717822035306057268695764415173393884284829385595589975350839101219487938798171485920128688398858917457237705261094055966634054629165693076363461888421520835103846380576619208652973580398659792268090005593479256760899821464047569418981208901814304967061053915476313088801304410830562396786589118047199041145453025883746015382796295087349144742328593301898892361665814642964582397723687983834913764400878011668022820371501296994199408184043610202893855117945344009080418351987768978211044986621718574517334461407073724532402339080657504599420330129389860650933239200240815448761750586394444167386835237159209923084103869341284702964376715134254741662914961820851450055532233808187860404328959486883846153313601466916813199742012554854033526158051299805478824273711102504253348239677474617340763312593566492376858627887137267393681678706514821568717066348844257553948803214200850521765738632928660079079938259413909308772135047508552180879642666342326138277160005859990902022892291353364860655791987729957105667938148502524347580184482095208990310062978507084727363439025272240690831457746546246457916248968843211836097515023300226036833408992025860870223479265069014676590635239752382200575609735289287714512161735481245067212857292971898729461289184742275042359099866702968018900281306500659986320198034201722762872239240191301364803690762905211200729367066033468577120543656820063477010465581952369125797881007944826114614488445636958349028376027921799134233580279308247442536861934379062388527271567748516746741915537693812843829435304245235000572878319755067310029299682295388712695885050887214347455083924768293717841448349560587768775719440044409001979399797661437843834310775595478267924587326518302799537049943533001894052737621700116311632406550871760545304932708652481685454700880377519179035721062752501055914235643416541133622348858170822666823419501062521059224075720210460886050645520148481609497076012650649054837706256484529149614314896690373291244039342421958297179813460700856497345097072867319279175868200726502345579655959923740152136307504192616686043823107601641014443307158230453508556334852190077708527817604085457788278248536777790836152161734391375110556579214195318210011437033148324956131148620615607431811210898538463677132862430301265446777994455154953033183341947841748261098461024581518036611090054559896553352937312652454296904389381999144862566685499220241227974874655684207228274310949721827291377269774704999077204517681220994775450323136225816689310642104160308836864533605089564039520671046079458094614318780284114560653480427498197898088276200475142392639329035318700227705087433895111969824731247878900034717671729308403637963567814348560309133491970949623033304171522148946838643111839109907297264066544995633959150468147400249470299203052904800651114318854110675045495727020617353917454812342873150529756079819745316748781282797411849558584388661616919094451105679738441896193004918666301472686332989441190217923813834258180972108914133222240746665044611708876238266226844500636675184589884737622759276043293990991985370552057751717422471130798934587315522519693731311745300154287241440336962011987970800339532381897768558679977640976665730051710470261240981131513748310129360619869276927390977078058992242406573343337654869886927721432852601838638574795518797380932023389949562652052212629797712855270205466532918915344783033384762414668395715625217340456718232785287797285964715846456696571295497369803917861228849494724833993699450739198788682991166183380645526093063860770997755302159064824625895416500942386244337460361534947636268725419526124512657825545453449665652751382685588898896753772374852509004624956197268552772534927869251189131657648550718146731001411301611484359739764619611458716095960797161851765891083123744486802860313633832976608042764777971810268733457770469052869956866553248751932960215032301395701601840821957403484036263610620257296076650211856916327377930161859347915122184683980983546660808889130901933334056335968948492391477620440312592292268513087363630259480001587941805483697322729648209695453551336122088506205162154638824329747544622585452633607983384626575826515311084825004355051250830835761469836164468144503328177846307547366398296599013792925098875949469640067406306481720847699477729287515469758422138182041490778843221316234343227047260226928641833755906178114811258410083652683246222637288383854206632937004978853045491970341315430995616536763518060388616825653916937648498350450546159152396881461724339367558156563772476960790196381709038379554987646550374468469994224061365111794554163833408019925510122882664148506102117417843257202630882677931092213921927959002027509923678801093361939265697770795629008942465030629521440169841549619747383717205323843794946556168405022863574818983679615839119562530158146383821955106752591440895502598541202615839113320211045835203783435889239017203537580878758035242903327617757179992951777675390957027331977368901199456960744279862619041182839775401540823609306560328767530328529625680191448944065154871850629925272183741582199233156657398119465464574333918169514178917134908574694720658066043130411456378618405818177821392785509800757276321107735552015758633042350500090687013820278546119263468918510701196270367981110485989255233314923308606741316121300127002457754228468620664110676284012938109157944616303631623987842969532569560766507164823478142912722503121171680215008036883946024180226185268644371185753730801203508352848819648853682850930775740939441873837866753826606437676494291812634816381342859585882433267343195423458094733970406369201843088381892575657407344796596440772872149466447752449369475718357752866756223452028116331270245221451912794571482863045569644107328982929263917173702457483076524058991240498010033563259668321063729247753942890161296932501005512232713853159905529076644922959034542416385056783575105304320289581875233446000669678121642214738151605820312960331802135705851807425958131116350353732955874127653775907038880789202008568566412761392276005174263380096561043210982626170231790048584294876683414116675742900093235360970761681031461768193206437423412199044748928279951992685188523551191449900464586246095067891175859112487110762723694278388858924845713926789772840232194655297397734767900523590682840972654913302706600877515768373763184155951759472467273119001606293036171031330918678186807816670723882587113015508433351358423459893956127547711943354355478836715519068085223221869542855423362399473069057300012940586093205452882654156086578635279168321412468708352669964716694436641392688055369697032560645421231515459570301020522433280182521239737912707788968418684562141572211116684202792279406848999875005774498931640050532942325048844759352606991988031299446515262027508460012315321304673877381204608477607583095057627040590512063463731062335458250497392314760952143523389111293803028328601883884856009752306126456622941599535519141878225759057091871218080022188415240874964633391274391581500289697206150425896676485751617007017988971606941614889930300529785895421652722206121443340633015506594106208597741480277373970594697320219438259899038978075505866103179354943843630072257609994977947282504199280477189284962232160040935269418175119388008662708631825997237759858691951995767188548703541534029754075377452774789776253911855366591830762231289260963013550931335882497484297624640087286838637667945909020012480327530394150335431692489162492930327882235207034032492213700310731761723383344803356357597304976332150418814087591055800505821806642750220832145353367089973459708443167842669022477804939048366532616811286841941911096341163931875689054976651073888015042446741587183694954585636514886936076049830262028610311384106317957555183549846828313481193331047246101824075250255512633187435521322483412048309473863757281727323313967889585759709605656181194216393622647992030163654354008819590779779807310553880058317587514458943749391436823577244177258142439485715344326155734260837456348830628621874072039136375164283843980036714850393429257939381243454426211211573657866192034614288710444766842626598725074234712331409847433030740818843007822199733612179817077198994357041589914810713248848050422548998770238956685677969646930887917528965715441484312644497687355440625833650619402640006757201805977859286472448583966592914163610523122028440990335811271383199790695255524407555757365094293496151818869080797266853148471039249225570208285863535922818358545991423581539254210720731335184091535135169814545264900228613418849115539888315354682326634066791589229739244517843333230401397877323679816526054670722125574830790741400964600933888804896047147465874816206770050732665651438521418366826042006435135753720695934438852111387550112138528243847116601169315272725229372093486664595198043967468231923493317888749066523169842473634701378237761106485888708501152138313172897969919542980848281829616496764365904872904524498819968089904672064141313671513387350480010678137657727364758351729872226003231745662278340881560294635511955155426974740664138603157690754228491642513756411254038401508511592293596139053041296587625715660179950785615979719816635446995382887842284118567362057980279717821725292889836128319947247697286443197494973950457283202288711644292692291468709625897317012698709222355709285189403195542274770406101281996842270980170781034533652608729825662496512941631654588575386858903791616850650952246413749605284514882271807643431551979459910947556250472868418352395421773536613516406536263154678962823039279403323454676582592086431851791008852570054884723168843115685728224379367193194733876043908615874399739682028355575740324215823988939364865427583464918097617242420463711720691255026355907190287295235083708723904314873455300968164194485838398530615191763088513041652494603195430332499659710213631894289539667681830720430544483688264010992675631601001665265869425355086878333739144878029389774230810880596070277247177178229233224949918537984758813580670038465231170272002439269634978076161944580856553570848144638981783017953297285882142502159568487054906786839988978337312193424775565733414393838980421542655548578625851571480503866925569993606624539832581381175678819226843166699581506278916963639121280497697736688878738682508561465931958090755116549532406118350515951734079881116199860406051027531108963762150179816557020160242354791030088975155176336628620915165764105512856247926491073272841092803969286687633628792276330059168001886111394094479248409622965005180807499285538882690781142141777230466950694100802677581317930969465420284473105635728538719100773586400985845794362336355617676500951782914412022566553470821697907345326911845759534015163660180582374904535753978070624442715724749845841012394368005532847492105943820440692314237980553326108265810820043002400996771604833305697866694073042154181071400159184370709148489405374653076321425941442791061845364758623723367065665204050737919903802699282885156813732943445830833066030053340776905395033742714633371647136088959003992117151222708181376222117662236593190944039461939974061221799376117162429858252848737667608023658504674147462667211808373959592556116033746393260514554383719522501694850598384700167588884307589856856770300121420697631002553496076332947820618404004589952460668538168007793586918663656522933427028780532780183692953195605142649495588944908826595311198770578795225599280445390457235674032002257443417664291445817887497806270519858449399042664978949108821730219163142840135224790319735757694239971399061970877211259751646184708606626748406518541502724351487232978819777114271919504291661230710755254999069527105645840991272343749599158853033196080696082618898787753730807997782894991435858869091113045358023807526670593374611995188523239487331431326098936707197242607174922651936425275255094697031924859191622404395547248844833173448269778212288979117996817147154760056933176926231868507143408428678421059703442679593238163177921635337812464003376075933999944018008564688171217606490376917024741920556128888885437275897450338632477162093457457371124979799912290934358034210437469097793008371261484199931301916374885848156673132059700505938296553893341792499113799691349105851790287473152410681101163545940664278513978995904458686735738739419827747110696404441047965815439329511195746946452737917819585218894037217587413936956394054344046789133088309943214429169376843424562298966655511021425419416983135688634341767636894546668310298728185602722615701179901466052766129456990816279729267595668120898467369730503774793983636948581392988281771002869802131622239060970603721354754448631214065830504453169294283705275740671596285050281384463832093501721056691959575681605656278286396120673250578751856048100204016145197819911792874448414823140777249331704174389833125412874593307448436760394613219973705254010370284436448947834923780034200622822394840542321584882836538679739046031692146840345076934463839188951925650553573241949614477643723174654549843237094429812138803543814354735222070282097461753146058434022658649647799488759920361723956629061158783686236702203098797304297298803185232010347179059021318132953732776265763150652338744683886300471442704886120554735635665031235961506451474808366301829149696017818668480914591010622382209276014606326462927833121549263256122393245316678684903877750818653211185161443664553196676828200080812706211877315304111675899834809412551459193295463275967933855470473079721231498280948635226489008315097526912098923709175337361073062379408682096008738785038020259089806341533035519571806487662383533557527944941529507720410521411960262816948354752655383356527263695822191530595934204396480957333973437314813909306841268761475167044533087048385160480172618077981913686303374055618621552854488061204625411072941452594606900584382728002937156027076951956817894243963490614038145056594870433961515615109631999379374323176851235363822412140323175502686582862915022185972021753662545033810811775351925983942508026805694783771076921774205170290351205813488331647453561708821170344930123635692848230891361214865813653294077787337949296346167167289574584987994728060987765250971191848107517787617971542743574955489207202825814324468981346257309091434048042796337965120000683585760195153500215234320621432915849055069848311542779656821422746331705675410450017144882287047385335410044305706553267075126339662638899897835032309452807151018986951181556952969583897253522708605791239738924206680100452028566000598335534171982772709750267304247779105010808365641289291540469736878357240967911961111063619913490502631124816467869466914399990386468370802139112743005490345664395923360957686196024631921256533944808803506474543802594822212345203070679272706384295520341407710937813065689197714262305874935988176146926870081720950173610998908796172717998812251956101618473649668063947809264092484292810005529192266584855702807839517932076160809306044149335457181864373503802481181974764305076619638843496588528288510426825303648204197099107067456634931265562381809249902250987880651548882506036550984782761075743123218464352214981124673041507809667757130578424842359139290856992680172587635420202221961588179516029698515918759074317371276819830050733442069881235159328447153329980594573652768997162861108131357649221459048231534847106381813830517088448210312742052433015662563918532759724878334720441799302035123198611634610581034767209942320779838739827835625337861931071820806297281160384875938168118162015909067408828403615326407391954633902158821863274828983551528732476450387609656083271308244661685210129460723557680874944406088446173107862904055198999029642860260900474889320904273785250381080737572728326693129796718970439454213304594665410062192459677756277927801674390961220257411992447487459607809714050919331128696484614108250144766778821308859510668257785619049165730993712736443262176275226688399902748108803623475439054940513121204549286624548006356269595657761389827493425741644229339346911538604117154863904054444619632563639801465093173406949174440880705787498947210876454851153010320093764972499772065192800840796431709111994303490843826140888293486514284600818051822640701780908724207826862893188705341866483198598140914626836762899296975035396753582310833726220552375983058308582797186913149678133609485708575885704282344049414698206606094942567483873919897462344765865015718770962357840711844130667343817461666048779111938498656525370495434707163897435021982534967958078598537952634340449504638344635090150787334775496572484100109774939426582544572543860141965992870041542144286103546597220092361082171959047899066807956502658898677186587989195097577858859537218965908935927221799644563636722098797941785523403151095698593975121805447874455302076613668699249708591629961442239994623650552207416071377895730164374727302870516200181465464666385814948979749996165938046268817405271042387437350092449192235792051363561960414640452909504937757287639291394216259850360666364227075637050269084057441144158279462325421256221105495055368664433627936417020647257190069835276634091268706197473772017270256378872729593075398168194004972998524624245918256349111504505397198094967222274586851594532830905247565153999193024614944048840135598161241396541605246430475719014020800376824187279475078664421307915832771801556780064968380921295366637447417567593326230871773379349833084377218432564395757842429100616291561845222623077139708905856981024393680051145229544388574215047874728748750809095143175224422245487325525164755397537514836911874077844205556789269996497282842062529112136233709973305195262570012931359315320659529277120546505549976255604883531779748952103929068045712727394076139437660447466418440781326473527943496678174214480867039468716345066609648141107836897631758590210582053712832488189914999705829172401269731073516396554186519753433312138266092498320144018951649648575849720263884603234033648393243863922427115981909078892080174283732302214082099515530264527830579831064377317498228750240642580983713149265081371593334046180892011245399148994271256743568219218811400152805168175491900513110469649059680154506512805358076842425590894752355881919875533730208482006800788174426948122484676542789594800653310492818745394515533143361385859984244150411973352775286699243142021003319552595797417406380638873415893062587993751283494676545175477938307161158762022655154523522057845571200305918561033701237092825579280723432991380451677570263927994294376387644660875918898892934690659201317298816583477864967368094612065380888494947510008383726473425788786244605851823568903259600539476597110929968722924379409583298345294098476002414521324727834856369628313262986943095885744532691655048158431390959243423858496696066893585675425194005076241988604280268348971541943914076074301240457551303367865404884576804130072218113536427144254630017675826233571212424219673080216690796030739695502193730393607743944723924336436834519336749534483876945929694995946682996361511376313460604545993923963928401730213552013234882965598787754224079835209561728318202439932530152848712668048708482479229441484499948199561670117015557462595940462543569949686272213770679638517316793960662727520059547603950234067411726457254098398333955721890449349782225237998229343046969201143222081533670923193043642365643311584105018492962699489264890679644543779693201589058874968098733931422752864248721123336630260858205675536914446321545676482398790078225192673640208791881853654218245485726471107070271161017141014202963100753749144319732539367246818082678671198294929118824513917859581787369196169484054013070087732482266867707180363685777174714669570843838913584141821029839902604855884399023287452454378738053051311465768836736535570473217136879683225156407441232081039530097431876884830352696685520966596104616907072909972607801512106564164618952885698969897217397195721145012103183424384944867251579728396063657752487905384114634272846419587293104640329347347892361724849402822420320694907686380047489517686875377498043277679049660216867544303967244154859601026338150111088132025431259181930177490172513468007729541864701918221537506990491183047864218332242516597302754458022434427305510548503714876712313191271331881004945587827016346446449882331928791600464386773265225766863788171824629505603057211808961275943587213010640070259915612840370478749013609255154387632452599727484257506779094803611299610512175657209337420592549766044497160509308192465524827118419283401497704669717860793744935152049543796746390809937726430881494742142813853560695119358520014355941134550080999094849146279184637360983412442453486132656496653888420956533976430548928105783598570919917941628971156720075187574582296672260187796947788768211373279475641792831445870021734771894289452284689290234574848174711277425032752512137194874420986136420102612518969394450751513734208377737403547936956534928124875416916267134769345892561902568564392074598028932224380931406772988494407256228104452462263909420728308200793654061648924431070329533767339466250322727335515075359368437123866706690490982532874506933565603742924412851160454932470976917293779118514681196378237607106103269126727366232180649441906711383358332861164971036808577131888516424519314099618840846911340442198731139710613649929880031639418964118281156593194905057502589596490995959564431452070085786402731795810969097567663495111585110215587593490463962934951106212360092164975220560908953110302126768454325047651608119683846496973127041827176268135972371676355192191068618312679218411782503787664416904886360557853148669329420525502734963323467508002644438959742156343270326462525768538914784655128187071794442458935402414369506296253023288395368249274887798769239484418985213970261332533115867860185601437034039810142390178616030235066396221830975937466438202190281061715108867002363027105822462099247978487569324304308984509571157293207951347112884980946155698170811660558944841186681913655471326659723803160037085163089204859562267435103579711459889542471991098379087446411938117409246457106269913976393044539911221924523158956346978457301944748900824368090275589795572478795397301271042887203517204579662386060058412415689318187732864967210353503790837431002408539376769235341285009775660163562860964402565033485657205106427850584074748944915817684603368793853052470040414252324573111581401965261712597619009635855423287954104298619522808290058662775705440690875508569451956647776494233905706689284974346145663284933349375235504197289894612729173440657658329452470252023988117386635173911002873675255174676628659595911557719934870360866724491432197718197501315753498274546311841469919499759233035941834861462121868478098960533543750047669868560335972224755924393024290635899410075640807848423167307672886363697400845357672683632520954093310661225421724801149503868369113781147829085772540593384997813520418089988961302954305477872600493121189986270999812435854800003896459598341784991420971052315459618551946066868352127198615753286903793788463789155923856958262554538457325904612800704066907307142727746007773874225731637686506788267942062026299855850765655082508220097970610794237624905428409150027345693364349520859766220021945216116652731784696173673219992687289221848012196333215712274900742510505216686832092633484878666299037432104226496041231949228784097178591779321790578177547231097809383002907539284149306970142495998570354156911213965387877993294849787745572157758244092144725969605407269530114549731227244335061847979300914846141940029580894353797366545449782519540004715139075939821542749368343208296422986282958752106421132204521535410875531302297156202884799826571045051932433533721188308456693015041320196753051076288444777287107354415408003527224766358864868004890362036488017667046844381531083712775809872335904739313984784343653440450473528412909965765096075001259640993606904544626563342340059757844687305560922465894882746239137035810469703701089422028699673904201914136579409770060987362266843060892861106946138937303122302400478381576078764948217677658769887944842359749989530392480064261188862962344723535851469148470586044224720812991607260470448162619568081197107272337990983988958707542860439996387257911739256990886522925941856395203528568691635464535662353909874518708980535561057070818576366872382008729471452438987468931587601513642055632767891167109164664062743148467823077990426421640786720478374100105103429557646049703977769391616168169224447433357145539169972400410940804654921974942162261236454718538119487831088683766059567554865325370468378378934418246875348157999132678594216529654356875446466707671931149929347359602309844173366368645977144144664472444076577740069398087090501791453430970033152318764106035197971833552619510022272331713276927804892990946430641068792431577345162193453024913954308509892770262726189483349170887227920449935216556978768061763794991594083557214866788991867909643717359705324925518175300214258368038473462067515654281363235503143396779244241726256108548494457599552546771258139296857997887739364898108799367385706591810297437352077291501037061580161559714026481886837641958922520238931041990029767522796345815999270826117920078495902642491768014127143256920952886959938254715314177077152139488454906919861317039991668897941255715127647162623082081874981810387839373891005975545431149031060981544688671654178822283131660107648539373740548235813191150541515840192751520629650817357802888330085511370945204338728758271556368304942385986374703608146004325307691664322640639849255497912040910666496054850796543291865365226558290898510811920858397069483313311407125173538952215085867643386778594190526239584061328431350937490077714028597850384950295694177376735391111154810457109879683672747897718244502356314042526509929269638046285885647058910634337825050857975515577378559156032906901266826737570344769138855030984114509637476931611482927910579832218919835153496158659890383503821929848717643008435286694945780171914072514332592979495561219928140828997065135153102130679274805722215522963640149635782359291196005181932353785646600442805629647471678206650948071378526228167132006285563010529819806932238639326536738488483264829475865020438429720780160051566124241634076088253081289098760887624296649334088437176748211183344657185904193636892616775468637370164847506356221879101652471735787641422375052837454807909411874569473947764605350436233515104789859054037889511868392404303721318924657057724474820142204283598336143368902204961790156646868033373193042563691399988890644573350116668471969608504401828177121142985423639469593934757661176214272813382423175165530502486357361478710234669115410230840593656185077263014834120155141590610491648685952837572780832584883537469751187432274794081478174686302546420119059620891322050506521081387681575783378066774458415425749214102007774606345728725501022249709276408312818855817261025293894250488783405091872743003497813843881898135187737025282709199128073256024390180810964123227716416764899569646961578427905618385272348953096333183527970154565168556277274866261260606772678677154490703436055537479385139182185557240763785200436954878021965693049333842531811079673904692031542354432596798266395035389308928459422917892582247237115431059452398627529645166099391164965029263838525722731410007757405132635555494823040784394907015592332488398314623762171760544214957548882798175831596318042386380964394075183146762308202652179458880128748665979084977359874969012634050811112101716619004839669201624872879627787458387690910210186644732337101770028964210746683411416494144198430639885799337654232153294399516396201963069415836401122163434865958883518474710982266031552161944931609098052145873590404485491959900071981298547759671298427464369905988902237231620269276817664886710429862584253864645624726854212036945380391904634814583857779835395755425529191408449699756089738255054793850560062508042423352216089595764900306972478110916658509346749161718363211950769603611107528255684285569045324333196446750392236942983908407208198134589561576480035283951452492406278067061569265168006092358543264645571018228395193579295899407190366593748353912318647251143356259820988058743445194227192968174362782913585463016882176471237168644275980680691802886309699783696415446822008329736290521554284296888992973793236273669787639783456283845748130785527880886615517855248443115884441066102682615668905874664211356608026692767028638836564546789999952282911828994516262408836386041056953898174185066707694789309288011104904342150667454166856250189596529285831743377200229182552815960696782487922989755073663650614217548462861572705339866594417723882176367852472541963348192298514113309105046894541196002006689040005484940517847762548257538356071674071855100187010289487794466469126357318528149557984141723384083698855523498561237256439681295016650477096508606465231165932993587295412079452304775624951398169490313076215110235478072682737425914039300710119339000728318659696396292389082347962455432695807820319400976699880164210385586964439238149654809392374860679250850266247446103603355677268807340556368206173313183517644478536667446415713767176948176831194483573080900766790116680527144066351796861934545203220835556627157492911829392261809296202694825002189451154887403443516993907904025878607254693939099546847689100374651875487089062217409012124017204135322369628101264506229291209743896790046965819893216388730255033568156008612310584689111793398298009165666639373037820585259534634356670052768159511104003126861935757997203282032247271546068053499620336283047164087646354890615242166187549668083514653761962779460948445505525719711438291981029339314411275130237044905299431725231654938203991547102444983338903076841989488701149535364194945683154277211108680996540699514013703255986546373995375144866971598358878737944610142701727905457323383871217847545630680443804004016558905249853001794795917440141000509316582050647757006884200295168405825885746331920320516668630024332874377276539373493860791843851555965445045357767484736163094527477039316219251674468567635130410428506968073015173280926298175162492361217407204612915460043242712048024275987779142918428972094694281564475519948788713843524421390107609828127187924899592659618776653861999303038570461139154745746714056356455492430549940788104228897252840244983623650394933741168328506077496619751882094298995937436650080460212478313736315255050216590598409926541175052135797418312366149766981693488655087022555593095474912214692990593763623222755154108417614722620775099549787268270058601122701490250702703927987111771526973512548089690699258579265768857625625319526317187500832706711144693120799654810638837262076430958093270422226534392613518974247997615364167020917109645856230110730936435085903309789523555513381350422295173663401857110924882198826721056394640931100507770175652304131821022743917488537893002241727485781990788890310348809979174988090601499898789131711782285142933891488510956122897710773348469978766932049110454524148433624820863409791760907467304904108858105744519009712555027396047933772099938537556912640371360393909110759077545733868354998828252590924027361666246326053258941369099163457163914941846150243106269469969411664853233346597887235529099986586134743119769810611874395049066187523426163402437412724919557393201052559192497989746030210168803378997191039916952562745594612431132334229049808086942758823475924108503957205845060982274930719270561280040715686760463737412044060942112846307781383027260798573299429381643331613000443959309597850314424209448696507148854797520544658280931715726558627130888942537648748835391513040868862981323961688683831105293938559304932186203469166506096699498509940393978359911098517672465339849978750144813226744354253322568338328708815997687180053637227562235545570018476401752178290778074845443451679405027850528972403596351130581211108056344614794769549356408077626881636041976491221263388789822121029326678185808574598153902719088895956195536932854269435368955630719687875468457799090686688770970606903693178159602520807220141235888269110755895818523285552195159840033521997246079533449405216838111090750111614034106940124037691315925267543177840483394979282861078327784265168527317678265385039892206499327925698142030040563775528959843642571205210672120707824953603122534928281304721776178712499876021729916244720114309274900203142055322310274667090955409258820674775335106072227877314846766963611465541672200904966166315511985344111943163172370748881227346652686510207608837731990900968662788022226972899127859324827809230243611671459279834452711788458351277259447167085999970800409926542027390234146189290064884547349471720414714183851300899408639030509429402969995321121638803889093345375002173872926926520485428422254882439220358404323340323401427255350844159032614793254516325485711946665637696301367070890484306603281156794239930293713614866916226519099448708953928905842628575805038641870987009655698703413329901047339376600189971525338438316137428427308397107694904600936730991826175445114679659355482412540925144651520971444767175781578817049429970790837079579254771923077834505745240723208128744382090199346030036016491293904529158781121769354815798669301580923466020775335223241276371596345116283420462976685734301581278618482381985494999643058136146176253037519990199199308521780383208620350836816519116763581984209778834162652419933602376747759789019821039960580788199459736395182633105885232648696934875051498607489083344211339846013828064278300814189061134136131040146611921953050502786587593552857768860238348759454855913756713437977889888659532559874693947648249711436899160645994981560719080172610585374849438738915750362632851183327705404431369698960625142418961937979249533939672556924460256613961500943446884122307935405750996420051564334507940923634015629200938869511291070794378082936615912773185044422612483460272053859333873799081582255882850752623379143976455683458011668285982691523028578577022325677603368036272002128145038941917524079442061180798122012038682812492512077298641106000519607756407734729281359218453866579241197262959234031599904611844547709277510741523851662435219804830384947175771657824091290952974887545296397830805122437557785640797813261208532496173301322575933889039033619303595555080429931353553101614973381491871174034136160023833081258173368667126756267090046348902264983079946106271936592842048162640188962016609953176347426154089810717196630177175926011795920705182943181749562295283046940210116984146872607805467204621284336066299694518354587842317533863390759184607928458464649094330954568115975832773131026170473664819939766179829132209741526045813725188583729033457924459654988036268338655177006760247520873637309178816183486153312576756800747789304197651746894717671119721133433129806792176031657005955674970682835820681564755518919041214325299485215489659650576853834384470748404468816821466379741919626092381852367614446424441807156073065012743460273147730403135843463586267486305907451333283242347253710521465458502900769517539363527670234618229242008717705192949095833812949835193700943984513001050711879876082490703871328976245872675248395451860177830807790552726375018771204297369632997820856131242891162108382199501713843119443056570118253824238537745191471556826293851754645923634543554610243281389022053182851085873387394781719437701140561343502108812104634884899986218736848463033569924036739945572961132864421401081233760795326826423769276267003070413448707203621977014452080119177983885764002845056260260031443364421873153594323749169374126600464548166776080560405877166906129442392579892890771042636150195669340544241034998745791293701412161815683497440703980445342885674231734558603163633995170955591338685317285816500274508852325689725677551226914576385512622674093003984110281782092014656944911652057792068024618804779925748797985976379343301334209428350471433218552332206175989830878416976880680345478164804197093824939623034604692579776843553248603380597395797408922370792539337343664421260025789078258272465279219251657105019921574405251765516718548177053304763225858050457537153451943671482414984854658657344622523308004211878777004890871471714930494320668391547180281231530850675958205436876487988326508707289575983381052014984196818630470989375357427474319188865560824579711054172495746886911753292744125237088503224027098984072318388071878469854487830598816367808363216843418770479345922132025960513549999323608438186254423032746307999780001991373448104787886955739298445112317347624394874080955157153375594006736805501236899244264214894644261019545453412868772058106637879118171193080564885690410708450008115271909149246734732188903930391838622823890473587291327568287991555453126684565134215550831338762295597387832352654124648339224386858681951234466083768586338470847881275173225817486711608551377514260352911383860522555462777547962189109122234038143069326756844786121315955272922711854165129763860364300271847124949034253744678753533287545770532549812141928044169340999264404571155535700619258787494551100787304396729370748646495522678708889185096464199113869285815477867287625157241746996746450446298583275170542140981748060369768990591104069361630604272615006375255107207603115087130285104047045672763681324815820754214056946570488532624859955360543957859192221877966950313920587574042240607796451000899597936859184368860430064840060294706616744297768240190915397667243246854829077329115849942698948660772394506478531728447761092259545173110322781656040882929086989058942950128779582981174318058127236438723348558871150344585398874130969188248645427885064442562602673151686131493697577072534395024386638865911282833942187394532730689194495672652479319214342271130299133514598438543020064625050955611570720747559112987433967748246012613094857251010655976256531412538219659130893573726193643591179968016759450041725651694378314936628772292593445776050930256566770944862765618198188290684500717271683921078706829680851092850254131919809494643034096596727601804283803441730038908935888483768240939615073288371846523402841937385283863648961792868507252531293913407282946227767050203522465236375715881342876726099157011875648614769266875469281558018683174578040292462964154095722775803188489386459644560571404709111583519161859719522538513302899004221888795323636351659988205058021975964137320891466268334284228287209139487177618174159066122987352369911893450853881639692294804625596529943804106495570565916319249544342234307079385225400232477006165553933767251314742347789300315309814397814022966943040049264869488157882310953683698505878845893717606056473864559183811926600187310191833589788247571723318278946420485531123638481094227694933186745231360268708603957273596381266875265591186701294980155691635869164155876726678876084370970433636165441147449753899577188725746608363667557051117248679258812217744023602977900423662197200544877148498392742186464493039143842855906913706153096909338137166363426501345552745657633463932340500285792263233846319619824969438147869973414472033018776839707492323944150818517495654345005946285237789763045234422360297907499505803756096725798739083954858653579213348781302611939010194814568289743562650761225570343569868292959555414393345769766714068434607117985715728035699241796479196421103358132706419037461112091439025408117118313019628351582125239539505316025318002464604546277968744576170526449378565130683021647763449853549989149050538810992704096320173778876523542914837670118977925370428262523936681653826262295287783715451227558221277912908170586459459512147951167791447816868824755850123912529830741516432469449679903721868569996983091284194128074106231729176739948110217850785445741617121126409205969152525924351725349883763462832172277478986129161303988579746493298710822465083477113276801880499613963425324623391420422486319060096492377415636245768503607630323789796705162079989881513739802182467888728162541253592343692641799358325530304835475871313454468384723102676929690673015257625587630504329136560983913840971356885695954127012350324031501100269663086609416902069552401527272317579531000537338244467710695533180793981498011702358631230128616593181759407311371218697539839164757342638110044082376496164614802325077582326691844713443776857054202203731433562002453945181501627209239304987906225250605208841542315755001616797748156389830700238133464655887177979103178355252270355929443235657957942287196517777945731621348613839594042592282901170351277838527923864434842728701267401130637558008952043123264977477599828004269064989573594188504500233096852529513140008935200310508070027635556046066693031860259806604216547756226402251869348784344121554110564297568951336270238102396585131594344638698917252533402419035426634243708956582467427374899928220025764572299602343504752423693354275712751951380121747580965414506508872224676426384661548703883355519906902010418999167022879752174712562543692955753863435888873138480838062715915471280404741390229970240529533415842398893635899082649646880386729927409560733859258884719710637339867375841335720618682763840501454684389327051651904674151054421035439899558482038172100710807105417954819864249003027166102290150573652248707369016242009651521667735296373652281650426798713129798659036996333797122592903314683445461208333659154278450357181046596441826555011849249128231205039671408999281745167712431471550789910144907963229756025881087778433945209488701446350272794700815650847835127558537262250454138728418082496389800526446633152298691307072007224600962221784996079389822123353360214294310477016540675982717253059463285573763454079334376327711942075814400154627610012574712648614974242348271947624071717349970026700843907819856611129917364710448060742700169623613628292261658588047307350072732801164579569170830777479410606125377543726333227693288091886559450531766892573836577299367947774625436779250189011421671262600606339423016409297271963773973536508532629470885220089387342983659848568908170026612823458234185866089613333960478590578706310981648374482890319813082602537515400764194085154494343451366721690157518274538820767740150194092418862696388246439885095973617566014957580520372662750739105291405380192710137667499357869724099674475030891551449200661626221570266146215032726649113690319574154290550404259141413284069386127664692713556396976016010595760196866296070116762640611043729661697958511645912381900673183657958280908274777731972732304121765845121199890561545738519474802344965993191196235873362976488940854715092058430555157545601820188509864257461768399490816235389478716213091685629793167926919576496006018034337714563029215495711365233368678042787428238797341416134226173078317658224080896569299064492780567295125415067069160289155923659149891135104837712627495024269278047689834128213821792416923265946902626039196373477920161562400826323078725830289469679982086947764429843404022020706489945775610748088130488150630542649470043237042249610192763895608213335727127436020297029837517683728753800063479616100160758719697114043085027823897347985176689732974113482851668622780852859851131963823630693042241955254761847350421452665294731337603817569876267429616396314731594351414005131014690454919924583064301466158525311195103456086735165533019992131337084414923924736996147937258320343896161803916441757600742045067135531431095628342602453203856011567586303367092015708623187203488181183849125692149895681809310068441309223096321337063047812133702070798872444837966770991770899928997630859604890922972167638435715123468031275683412595576714017285219897235845556355938718837273230863611850510763140329769547833495443988313313207501053928843629197093461270212779453615498553865243858920103666905261687930421438663289760116685796569254767345477534193990210516289343496992896292211005461713909145463051050137075328017945869056981155513680114742178775943248840210090215869454367294718537289104581864083649951178735283759546721254067497445873595469587717947631543917860861798806929865810921659936850179735265365219642921986475085331697935257822336187573209032064711397135711939941356120084781808501858792078503905244233721905213102965442674940823284575858956134753501847831814269126191612984771560677968770005794432502089022987862330405480668672641598619036993871462464328871006363626141446488893726818766676583860206934532311337202955142616569389305925184274595186646099983468056520033550479860604719807632220406347133000711227651479200080177877769976692888248571196126014319425135563711556011937878752849464855912921699355967780072429495791721177278539911438137800708062791783481012151956995716234392750558541339236249502756295110381019696331100384601890845709667577074086470058372703630551787861828447380196576241518837426475816753059234931613695951792926511387721135212314274791338198747620931649059038103691459847578292341991645997437425645531824976291742518858066369312284645125559103099172983202220170843399411169302003972291222673811482801113612231574576796202596097235068684472713044669002963268949619073191207414099082787650206567078647052306101256112517301247520854905162779230790480928623430513789724764943950486660550544963598600655888410088171526801763622104894518925189267528987109006680729082421254120087980639683617368959881951590422494225248108027259914618849904455330263651524218066348610109083610068573748366477058965602713185435547889432841730321179544086524241876456418887827999363677174432845971701897519441112511162928192232732324251236871859605511039514814723765634253084431356882901242828370540699816094211489577889446267308392360324413322742443728243591681455987050166980952065256905006919479301747612709932656856659980197247507271837882609132762442954522611007660024392136858426828806601279553975741624964145890506738239741728582322182825654454816270001970775206678542009946569986963507552328355501851791681671673989302000954931288346859292040422191745981375964887074328823152199775302855498700038459909144165421625181742161602558426375917295528225525820565532198728246477790125477305968104475398633210533465148356825936815575493971776556615946494784693103571425479292047620676332300617327024899612021289712886992339156898219168092694072565752650674093710407309081467402036932625304196481455421262957222656435898378040454306399538984662643643439230514902298599382717458540015837432528158336082705960763203636866252572195752348023496039118504495411685828371342952359775002790585868225185638965462317611189229860166948899318476892224435579151407390441492730545820578031148012851231294434781864092827413430876026179922402997798649228598571913077126569820091896471943309105986107829943851614198942793096362030417504616924763500265745643577828967149461230404479384498383583597705087151302916724130919836752551156092342422832730357133525334204962804799840211587264051086838901400699012555027709442551531854876686684774611594961882940962325279354323485942094239083599460071831937006011419205570987227959610830982987794141963573774625707635023345480527229769792347745086373706944798306015012958468910141684374413273712051791773274243929695762654275633636704002295039143839745635787535824660354969794410336472929226573036179823174993191248319271003692779136715198653402292913678460597938334523534937029094768865005096767815718285365369230168661287457711770617720967944384016445869807738142952367159117843523915716864317270652883098082312565063879116531691606339362900288298583786941190512457360985399656113231286421118613474665657830945946300411318511578018281731949384812173670350854383225685822645548741115018753703010265096930259192989320708505544305975691646539683732855882597901201766249131276876997272006742546051375636078683992243301167310358811247582670231499816750895009725551929981617548934511358517076208017312608336934366266852037626906917579081181494004838751291967233696370711428342395034148463234214999989131856271577366982477792229281207676547192014896819334999111440164076832126167306263364782302599564071158857117568014108930875719346155100715461975046698099065895925530983199912174369765274680283542381942708792028965172544340152605239197324504147292383575639008090841873667644999081696083732956735614729252047075466575557248907662417843717217036182614032238139169910103101020501533138151730646525536487181249515814583747573373975234523189940079811120902305402487407241081437554887732609569981875534061204338596065687917963981304339384943110206352171718002758976154596819525685332501217255594815980707069403268861394090075053499570486118899450335921739273825165649359932346450635006014112185575401596803928869816075250410187553335237423496501184400944917955358978134387536875954143568350214515199144373730046494950752917360567051557932082061984177001697831897089772308568435120297843943285759676354406426706193477557315949555050762222220097339141055995515624107258833252142979129912946028239778005962500974026996279118710576302513927957874745392526118956188045678610877563666200578151666667701388199553629284237303880884606441407147167640252843577443064974366565664482351061470758598041711842946875791641545381755955030606318184815103411900177896318016400229234979581487975427981257647922150200732548544221656533992507077856797854185215933987436551736206935557045727052857169795008360568743654395480214161303756604891593506071944372299900177682808422133173223758763616953792521387949166079693497640970968896261953368860214658277116661265122809570496261473623511552152370794908347317725098859758002554678843727605253229208725056456439466744847484163003763994763378005215168743554625085012805328881064333441015128324899482189260463363589488206796763565842236959037290743338548382532391032962291460621039605096126515201601822249884623102714733750462394766415394576256135748301041711599052505632286836756107035154226463617893040118536652598836375504072237685616341166617220315780613244192226966001941935328200669002694768579206777711644026278369927733465566923722666453920603657688896990802050701063329024472884567090363441298743206851181381890489269288090291908025821472589589517998273321948543881439040380938641258269980460435147046205710264664736929660070953758575627277316707458337604370618957698387640023164188466986599874569022809169531370488927960714251609138750634232749170071012939968650228870106107675208251205093642113234940525151260100027858133222553721666338876831032290472943008370529719775588140218369821790722043262288909842973472727314878788288028753419330316121725903498699431271090285474328823137785662523683420954202668234490405285123772386536608354883160911993659326631365939135222838699996551696798641780355869313605202151519688795948241702017276961647854252605782414307074659970018000503908953381321469918835226644123471024831769788783139246024270120752604612478691825224629222912629257986472300390438491658286487295770365659170531175803555687471281984625589285786825817677576929081727667020943480089252465436488500434790569361988072189466851211290105853719362641737785498481524842365129511757497979478273586011108437489652852096885668831902256272379009386025760144219070413954957392403224372560094500963471907244770661885480141860871538683925540950373304968828476689390540090135501109358714997855834241249337051975160105064103007196533605648220632208241621630767355545731553106650642869316381030206060852448895016623531221308226557445410114914970072531977661685236281919740072077228181564858906906309408997484454746687600037252763800911350282738371697686995829653371428370274035483932871814283692745172299656205821058367122076952080618609794423076904678574310767282358479549492575479689686741618272801778558584154085488122290219800580473168241845727021992757260970891117333063268721292771390038305525755778344222554162336042985938191777497921471990745751684812874857159888884352430791914921871805788612919175596080346468078007753077286077233899918906969248128548058652265336243055851468558240147487875863175584867784287221382281897666565262988117353000280939382251149246246043056165825307510273541464550828217599729656972025192005350451403133175930055105493764165423222424168904463271353476586697077756316457494767217117555012319875024189480616367051542029924135375707692402093903110952040927036027739858101966884354200892739818466234708907826175778175184932614616769608553452191734676308042591276473648253698378276450412129604900027027512188623954637394984177192757320613896200435314052986472357574373193942145366217758665186090734411261792954730384236236233069030790654665303941590138524436967398224246988415899182240898096725674285804008263578176420057130751835572233840411276977531074284032030640038730428169363530632762046862188051577086206453836617509903933138712586274829544525544494153388898850530444382425970601165853304787440851865572857188861481116902926264957936815288739226117639831314072268062117877675471206532522537822757189949745612194074873883598116110835940286006336858530066197698128441410787161340110991317277642432478315855615991355517199028209726321038035177437478719644452043078872397275243293873886563766633287316955489294690607975191966938247962142236715574817245854095808027843484887980351802386191366924395587572129147564616147264734849058645032032901993625604337198724914597604401772452334913290718985080103486965516989865501504129523963714717045651725090326028412099384357584932857977410511260943507692846054271258693228159557859639840642444546172635858205976865992803355330777137293215648106830869436191180345590248896550599149183535325948027157599631421551337510131541073106309458414747205616670748425314949718510805984556992829094414388326944065849382345049555747794229396239042410565661452815213080963694842815526071470307213783959855274112628852992423302429521785435772373882867735131995039425911571035255642678289328796222484360219690728485555386866474830363865183057437289463158004961423320983676409484906790768921327213084143117960437825131930043605674841022698999223205992263902033484514484868235872250963029182855336331114155948597252957219951531303818621898396916903405833174321317241378048259432874642040782950456448193468054909830191680201639362972935995450765645443701111963531358163304024742968446518190293309159257347293524043105502359592522829812357100655843296172604378464644131596603410996007052162684079854703587332325457130332099917409748165031844195140118999414752844760066806475449742700895693847175924165439193101235721090740913342598342144136600994328143195600098139542983626524840051576773302479875876209555101164520523497790037147423488093525921150122550590625290534242680219662618175239397136704349673903869840343289761189497755726543833128792238946342087530417533975984041962041275872064343137583557398173174640108199127238740920890465619380459964016421499142782318215594930148949561620364770238987860935273226828153834611472210999520996582117567600160003759095024038216197213697458062783405478596489579317261363749445716200685604872048724006718868748624691185978857197156481440087265055305131275193355628005560618223362829368466987995462044315952545902636445385874301266394902401838180565066497165165776490268362338586930854518292068707829040574203191369145976459812067455835059051092510168875151894409151694674627041857900764058933195092780712349168240519671916762136984365966443251607811801600585626714942234817656723181796318688107867049727298203003444038106664777980342474317775440283590081307219619983397438054581259318949860106060081321704183909132011037417245560438355875387725693313256575874121129559665620896005981303360745613834356699860081045544931564053831621795010838534113426848681310609548169800218634963236312702509246876668317724497607118455136206071685699877679838510211842200508292054074307542255877393030083552683332968677430643270445473519117242842532784996879064144671835343568289617894045870144940599984563689421091008830707071652544696847143718018690139793235996394867243699020278398253070125722349540907142000569994734451488003805658506880330344070373499047678050221059851307712322000755832025551683816427128863371008778102175490410857213167170417216931917504285074930522228215404094138363487721471544289764838243877856764592578473716879184322659914260498466703670617661227083954390660886491464191733701670658211078125367866693955749856324510124879121999703822059712001681993649040302835416706318925330314080920266054016051695718707073997622368893963852887380970496053365336525901552008105846554293945550771635026304384467035823574941838073162674028899681269258625551314685200902679915430072456443229068612363120326967493287280117964959766755178335146940645037078545809099473920981276018776134649910093916967392765679556519345261977763035959063318009486230856629441759165646399616742913335253207893885791395525067263325154975349650262540064263687737072693634121358716634535391608556411460218402726394030846512804441836796422189891486162439413623947914575472797376882851422569724979704962421253035356537038294602152743470981941988829481704118372945835910960264179900597853665370729609846481138142026707191918163605337879161515939425676749713441254282711807356089625996960445771921698860041469428513258730660544154542612748862281017618659900468385125087993911741732965502277604688062928302114385436176076596268940392664865391122346799364811515958811718837794508993389869270734193845675176760187797382856608919440768577355254502423900864650082317851399773564782425035626215105113010921685155027939455576138344757262437331136762742132585596712524855883674914592454276223203893932803937654155283746508010484780155393578046478759564423583312803568918631284387816770850529534120595923590591164224219715506361891916585143475552401917043869003060121244217748714186476711820408906521625189046723549155055707625027183948617123059625960163637641336465614696525062440336868313235382641399802940797152639597473548237778776728495801453281358457477758325596475410907383093418363189808494899625030459641031076413035981176540655714731882406683264679279617536520868019397775722933917844659880963079646099589688235817093138554377121087108650017289388220518404161008364555795777263028774488600472161881940647626953410688115826011275430379681535792015028979174925777181920972861561326414161466757540486203301132000710157910836251573764623293924906502567991155573374946991523285042719757522493122590811339033927433002690030094544758542307069802957286080225840856252487575221850366758191808185919348125901062812674767529229492574417591092027223240351762311829975842883379616781653447965909542815952142405520711621704026680063955333049446275523336348056195027921614524127801393815006698682822712771666389522883614064352539830787509178974472897937100759331903384779362308040955730152458929483954957161861490923325132116162921053876974880421945088815525723515669696367650768113649997606683008641914019036292967991948758992161300627578092882602584182888871761455052036749625662412697104314124590304232443714163566633828121747276193571984788350571177922177613741226005111336820355364627888229270134732756865363161446799612819703547057028568599580282074088754403089850102497538559069503850281185522619333882283448437467646219136713282617076210989206336450229130829895659923812334147963329928505886706759399579135442222263976289195479904415978820553429307935847769006763696182043957978015550102105342274516554839233441025384554625372904364524163399018113419435094463246424451704245166326812859605653998837481860227763605464456250001942384794430176946103266806144337450232500367394985605803605337296304623525977935685655207848673389539515082921943756524066858092439508214137912208861612940035447993975334185108534102829922400207271591984318477950339109629800785248157536695961310175423725218746971971206652516355498027317067593815958434016923714140528396824234490669243886263790947104094563981084540308737041293335557696240960208309354924938979058157725814715357596177593151644308846542579258750076080514444227380929803663594806399673451620915836613695228769197943599640628530712104590982029965542170763205572929125090840862440891394439773965106361012220105643685437333585237052139311397242519249214188570930842710014907967555561985244029543915542827111443240662331198264682124329140501155892585037819107130333421293309239169271808471649842236901230756332966842087242244232500765428309850822052433110213662539052292575408537842615920860440162886085953366752996714476337023176183363303990813754561410824771498409111226452330498210460601962595862343605875515874407302038382379209471365913618699402909473391217727228383255729499661249706984538303623295473885115548393818389334154162477390702737137452566888662126256730333321731637509525918452283498960715141331265964191069460862424655030901325498383393784205036300980233631640050362087623168888547861603314048109743159578067182429179526656988217689208009546222710176700795057741560456667994390133174589317402294950553204950978129749155064511397387808692616955213374961915315053732274202029285402565729842818454246991287920137707201672656356717286851647646573681101299057063668841765480978530180519709062777747284955342550305800593390006788754470016014704214715972578676613937284675226373311816410028380619710453875901270326801812069988587480405945119362071407633134822664432563801885011121604680938669195415967830862370988150918067289793448619474136464541899347937765517275200486052104911659091632166380785924757615604486410062920327272811995045323670106327258634312016290016946461984371653292794246236610746022264090879552703501637247977685705882903656376797005456856534973250988758641669827821467114494223801185243166205448752871714757334170991773313173393458740061850427145301368877035533457852513781332302819444117128028993279178722239782442119528697415352238262562551718410911681965520778907320426348037902870711428468199121294239687096942127029512989262602890829067454112889342179747950348288016627612044199930652257772798623164425905170473413749648627728129242096284343225688334881542069365613271751882725265664456100211661059841873234659125793067374251191403116994834569507931205626705997994776708832348024922008673142032356837772449932495665225400071182739539661606278688186850406774719053720130473821707586610085199113476840197454974716484757283888226676495716933041586081623410894385322594994894765920380408686610506951141357655747008583020465109104734425498830299545338655846232689053967378126742683159759695120994767705730744505710460077585159566049425123005092964637968105883266364496044863096238617064673804527413521197356569431754274710183636591894930072452246859645195329311249189950147631137328472359548386345723981386917721213454945441588381108390510484600876927895319408183952711182949977905648823387548819586537747687895486731404692099810123057255390171976316081262653541426128055165389015122636495911538480323121632377483023227428742806522125530474970587386309974124925453064300579839039798164427636889527492190026279445347514095616692139899254728554933138820911435806494369645328123318596436969580694919139992223741059979194219966579790035759656840130690123427406371365379168451833756975968450388800693907007252809980939638372459694128694208199014420118825897074677714493610698059225613588744163339687792641067303402950416515605344756530304555109385912183419740355043623750432967805336417228292679423655582175860695673976467902527842928902947556373029704556423272927811143641049049695827286318692893507670212650429450638531080311394463337594431953162051303887087919985148474655187939532705127935075493229474733798240104047356801852419336497994929360304339060317196563640730307466513835661652438350152949533111210789409844062372075142166082198898698938251052950318906624262792543140208175293331713738172148596298925126963264259912321584136809809286598039804808883310950304501354990470092970382216438865231830585180481933234351569846489613666114263171935944193980640041123300823209068818645478680040805300086933164763753721342617687589814624105532478213157512325793446060060654055687782846329317977380511214031624807975193924780729944845795155285520374769730918951636733080236627303789534290242046460461053062129275014000506442558809239041472953765855497875298622042625332097475506292763037509078173635103782019975611040229449541648127860165705167269992453063661013810679155297446664125336966102035320700205874296571143514043220511991216267147396135311446031367613379395533660809966152404024763771904834686430400984588244990414447970424473947805974493437428321056394300680868028254861336255849735792166749765421981100353471361439634972142157497884824922208129978479547754855029847804924753294839545045651868679289038700920714562102565520568196788493260960521861506803284841479588988106333660405359754457413537246494780337271726775868903762166039186377540183041277568048576206819119634992808418046385497256475778032409664294745756081843514699878977061771967225308035899346409060610325582686516241040410223934604047292529888335575833215058434064043837918036768615046096364048077675378055726995074250404674203182233694719717606855334851308120489086503096332875174593550565488445282143590050371574912876423479594535904166741568168149326783576594312454625162719778405405051159867227862622344000597329600273168731287777880880015606008004357022728140581585654674479122917462745175507590674127203993512943169906785621556258215577333093105138132346217490936403239243573592619901363412767312966856055370048272415678475251349365483555678759110236894724452700297580770539416987483989691968012569174547238929585632996443281717868665123159366656585236339990407523868200414499123965775156985452783372998152904126598999426512917738055714656836974989801721636356023853807582703132498436011332440769458810473633943845173946525211599875935172819249952700018581544674378163272461236036565555695187407580643547477749287539438517213017672017430891868019434744643392309437727728398815271076756826794457819772508387545090495961431630473976491829737463425527526023103026861991201667475324725136806198186419953528891826360936526768902526578318973674470423061571337154437633757762993083779526194705650125122249689262730718548825564402500427677461948484969983234248304916902300709559600600616326647324132451652645762792865490909529903786585960352278911974766919909961073760869464187253923081998567293838708226961739210276824014529003615093224504624627653834525900380920368011152023457745656273212821289283689815460151446236869669168775260006924813838471783062227550437568220717939561551191315072620672280405456729100694912869362472210217881154245718621494818429887061458378475894312954000192354740855631037099346805166025578864488314854780349215286515903552308279983088896643478077629908425167051590078157339132010086991232789979800661084009713437403244115594210430462596809366640303631041904193310080131379042031768918592243282884011310357741709060249790213774504380083089039463579608876289510712727886809367718558311860551466623872556548903850464979916314854236202420665701262462260844662215305090808952068114782887479205597643330235517832716296849382449947295855151715873381823695123207859551798988810197703122607965210827129603579737494470989934754823247781229127905123976552252849705566802967924403675905745926642424167793853953014700307827213206745844535148521440846129152951122797590212294775499794794897029028212350474611793558078272722467922658642907525312395909735271838735361210729768044817266969396967085234994033066047563585015859701323084643084752167488003116761595439095761075729272717017237973512576709112335822901492488295032701815747235441358543888173296243864934343253450028563588113135504908922868876907445412536013141303187034125672937737927733675615959675275957203270710695997557442948590586013330933502839531480196164775616393511540604417631364248054192798077400821801290734797403876344535301424007162608054063461624379510357770946649377793578075812418804956651271507843073423644237473000111140046190423443542272215359764418333675105531896642690169269332029888096371331216864471344129917151475675326694856010543501498140952087218778068122987732521336896354965732434372037370568173962436384609700796571257355611043758145825544690534501558061946324508203249496701125706842593009990005303414539740100902684609939141163397536814295601772769602094314292244931974675023094354518349323970407528126344338268445683519813511247729074199406851799768658945470124460746555788630623368261063782906782031444525737830211607957115270216207712563295883086620923746204797776326911366461985774591245177292978704118380028063833103021727379774441792627699022688941946134650956790720142569153001633730041541642174647837991455982477315326191017267023748437817642112902609825498218704730809164429659633478804098161489680910364915487560753127477442502157636519583083092431431451880016862639736705092160520229580659538512236937946555379034095637045650269499196361247506323331274870599266522908412835676745599114847033432080819925231528709904492402627478612063802936485472712337543718535913063761333107430326840681555872895219189532950677062523844661200252208066858830753169276634567678770095330160152097501324768081926599836276636071949788125321660245911162159025524108222629683918377970260100623062833314579547721880400003189683697106468035319532681731748734831729369188255017098502132901252812409891521524032204282859621157503700747103486965877835285720068565097893911883125472872309478474556483681509842434230658756114101612190401347400707268313771974800881943155617191809682829069213319933738323213404510543114325755523254726406080163852831573892746723572358887926530569282601364018384261195945922235496741134166151599343660813939941296536601275884294091446497804309120674968512656554020861410502531913346967329902522494855915028315780680656850421754710613199156038367688899482598204478590828246945985571239310175523091511406383908961183691699621633614290807350377120683919926007346347888099648485776221088599667502989924604562360790438013502937500589660739192343515054981551669395037547751029584649040653453826464681278290142144171541817505536013763678740416763635244695139947403941196775965064362052969445175715449524872625363459809105152321339141690903667304189079262595830385759476961273433476801697991685038007642088418293373487525953899456349754813657922207111840614035459676166246234910055912311368232783474409027820147810547467070489463422999197003523356533670923044265579034852479067894107082524372520251099123068458910646290733930035441751534113349935673249324746121872378061399827723171398162743646050616781828484995123104669443049272578412156467084433500910680478599821422883176636480114209890623833993055040413215070609231142899799869489021335057035639179346286434209558857872728732178655254695426087745945394702877410569730773320252137158963640174958633870945762730771849242698026840442194894005081214040894823210640177491317275632254671962434908410709695678195135534325726597791025023778374293405613095785236997737785748347444258203217837811694714305033248028182421053092831768747552198628914565860253283362982057316392353817438981991466730075689590318053631381118721501112307500769753193982757585912980517432057844224886465904147061794204445086948242128429880323608489886443250956268836181356063189835053763962617491179716735493572408871016766442580476605004189185755664077059301224982557777114586861402676327321437687077915523475446122002083621791082111776040639783374674603029788511938578212705384194935743739789088817176050402811832855014144708716482744186635085578927292666918968638038801872860867248979878323870287358292470462255918352742819075882186827982923178710697406090183293141038756579831241172274911183499247294793016459641325291317130815060897923218536930420818883644426880354470283564155351682745205003795750369904197883943034516115580195204187658847525955073773466480518505724473528808579688616714706661255681327731912368981535291961790063742679140395773809168855532594614912225458621641074712664721549346085147999404789400477898170755135130072812300830774877857470958138444194626317176657543177417887208226352905964372764917091882939612232276443859133255935045318149109475460405145696030818164951676703484538838442060284172180399901155700897938001087565723746529779865621956777657594560794028122060337291953290911661868063170188788667160979523574627328103245753207950780146334652694975214470534163371315052400656809783752672260238913320378174395850821625740683594415171779062217474364234195310290622421955556436171334369971378592002597621857116027563298741411100914433969931071000594923833772249613916516315476696625414712010966999417998460168534958334176506817755768419395675723082940212450413150467408604407887564912011487611897284227982504338077557498502482542630620437105266154616045783167079295792594536356516042838276153379611677119299317351277590067747751508023331493140849428068439955416832191900669800655865863571562912719325223867114675549937184276449007212216579681557337929798263736068915322678863008515860145229344766646763106645680458462050071141658361759284154021723554674913618204699169363943536091193416740228549886966368949715147582894649001478765243290081293948547133977781343473299005151073755660609039845497357137786603821700055041959810059829251521741069005281718871941766986110948827253304257994382667293733486264080385819668219106153035498958374604422694603382489863070037781440611709968353503065788707529933479244548664621083119253963650125428754848807695556758738735118153716820915157046469695337583452878120234913460497125491462809286254816064379210127088642126723814454449683077562049449776389107482668759834474478221187756762706354999520854064194744177930499727623270023940632734692101556970172218106832343384439715413014720860345874261813430283568571927412822554707078285954999673820100216120557267701768339715018825371036853773356437990652720375051221254286846739612871546581558655995930071819447399996686297859559389757724435377707198677021785717298650705343812289398249401871458676176168640827350213290539471460044431979124306746203998709287384591492864590773623297297610528706965987501462373827800615404373134185531422436660862535238646037257897918980111839756435614663805770786335156830259875394587206654100918622781234727977183432151739386789496966545064682181290526549290522749692516263483279002932087472474793358414923236820983567943963872072214878831453263833055623027182104092494586917539100937918623691835850550770173117090758372787828807406927106696948956430009292039280023731067807435116634938218740957129414218661278830472395676933218424892730366372142100104222018677567169746701279690861754233243009561581438875142556752653555219181692882928707773080086494588618936611447727418254427883611029917950325144599535834404752695892723649704635988845257519060626812373497603215370920658710933686788555983379550509629483029767208145486289219167087953786090196961077273944432849539590229466751878170852416289869115676891183844397823451168619065764560412956717886752348273125431344733164765353338994228599106613326543181461480684991222422573068350926784595329112248391403596660588834801785921678436305829075559232144293150510076918432586453271041394932236661972743207115770986499026983021915340030930528769306917313489340281127928640846247435668808407957875398202386022624504876869512587312108894275860856326224718650749125430014359142618299904836956533172174898247265382341815317259048319064696298389564744633291003704639199833470399928131720589489154940437247684569447633463045288497611824611683651759788057634786556621878469060289096424203103239418083269797666983894400921268370763146892068422075889956013293287203950704951739792496809807885886875946677184844416459997191001281760237890507349171892075259715198077468237149771544136450518664858277568725665663329877384014846624800554154074374614723137942757811475660724215884649119947907997928940090779128363399226255764457745203226558488488916925651386587398881085704204781988584294559124743017861073487698396609033595394096436373641344030823168436819743814576268900909868159446788500790734129832488402259742961274074638618106329804724572653716669253053743155918938663994163838806287611626106008993936928985835600137774030981614218580703813955812389350059515173444298347228176311148561211413250400817351245841163192673376203725902264465490325489248993617513136117713769896238546909600860586852084255241780630280248399414438971629087767586314938829778976958712807452723093343564334041464385851939566306951318225573756528741553945891197455307616930785575713623478590996899982986801899603888426293302943669198130225867737945291577868566143793114985106956380154387818943266601611686865843872508471717191115180042056715310694951882575971038247611978749137588638993887834355810812153913288439212163215755155025197281091132395438984134275762143598524807774376562844493092500425872065243924712225154121575898367678199896805233094941743227475019953808634399089450047424409665867421665407588853956394891037348883616154710444401860002991701219230630160139148842941862012868630885903815949181490160887654781768373532492802677634994413546604310204667772448600157233016639137266590773246495167184482630079588216981282408199678965286883127649079944706170617130365909760750124965594873016535041010191465617057045207546109516496813337081420873072271207584114597868997200120423517669419059546160174543717672068903471929606137021683828079322022681186559184319974805683284515065003536177540664491610423860863905858148367890675735211636319822697973193523063939416008225257660036205519964421811390771330654717895384712394793774677869305097634738156229977143558291515677625237312627873709916536194522585403881597521512639061738033324805974196574427824176781199910721042615236219110683370853197661491066823356754493463383738962981204861232442448828024803013741582165611918719181957888420571821168659025898736622852358242536650886530595642038694665177295670718085541210563149401469839372009703963635288989141105551764335673073754601400213768610833298854699010293436381008695672252891737878032845166360112386854584077461580910809079621987484186351673569235759552572903410916901395799014542917602208364430030479774780014838494207268984002323948061293306259126810451507191388584185264214955851333691996636138378974660998176170237041198563307891635904282781537446844956186503413797756024509516432134115378889535429187099362106521091588625860404991017461283665418477565817135222570165583233349055700984855804582757912420130701907734375289040221798219191192633429900410891517307257050823318253053944952693953598100206158635543006097284084228148206024276124766551019039560908886280990450323031463629831533322537123178355400085833170234927720660718997692617275890505555971688047272250833791596396159141002425740083951825639085760317723042893011177055486922259421109494582967535245765377795342639656210329133390738370625430358376032302923130430284257053886792383090418862833108714064766659467262936940966064826464239021588588585595339032638649362723585065777176647125765565673584083721584348067723289804717509639943868611153005207449905737087501711468689349847813678212643537271349063745903355997143674055508612119691051616884281504622922749943003954357564645863138048624837828885259256617615707357520720745541660410212879679008691660541564052008904453813297547464067030751740251674223732117460025077352014131556824065664683094142964140926420337177319260981316388104063253435788791903686470714305609243779449462281824043621936767014407107943984369743981572994607526102347818908800241182926134253333377154471005001588509349003219222182222308443305530160267342126740825942255665524664621801879693488997081427588655883519018708309784566333829299199469832131504186411186138398756402963140404440861648697610320380680253711169462550260359794484542009559713333195277387431652240380329694440959201648990093625393723188124982275486495257075436343849094332612180201832168059683571084843029428115920646581872321414665233663292865751127985496738740580654939250124997314050623751940752971592856271244928864149728114435077671590594681746394217228012063310147183685690178109634085200270953705922744659452088812332271279935391143030836705574457586126060708635694212376341819378531659747654008965207297731048369658958138069965938734282920134722738600221123182221734149115604183354875055554127582161057789869515989584996554534584355040122853826289554954013504525922482650821486401197205948388214418622157780841196423692782128924050958237214323041110212790491768637309921799405261372937114209665799585393635739327235702526556487820438408752010108080974875185966662041042333284871874385866243999743872990202916835123752071679541886905540161857094337866874134728886516684115447741708696817080282751464558765176763931465093120833763757920775621395486185253430884981935647476065906321818745733626836967106846832760620991708663170243011747134361568851506535390877502461987716632932512503737486666513156117448856539738111476907900401020320898478780061267345258891877901614030019351731701981515011368870921415643460245241890317919853732012438752801629668676396475653778506778269066858172790757935539522474894558544999752876616070639757012147504332356671342074054600669686819592130804791266427376740156802362343859971422456519002618452870480493803036295591558288111821142582473093139178110087769930255440193982215280684761681274810005769655763094166803144760348779736654544487778892564788108477700976888174047962024455332363237814539426459653530293648082169411880227638156545881279163872127484275458846435431435574285222697689982474645845695188964802330184023177146153667744302456723434320656606835101448341997767071634249183613394224488899104882734789861872612537236345124324278402366414927602590146731192894855238795849389040778864580431150841209209404033108507333958894267013519133141876210824032125604854794694275984107763017185460038166864843164028549674035198624762778667746187044387578531379557122253270492658044964648708603133956335233605179934214755392013128952600530476619492182726061731185752248425418926823780090248123930037809562629038185617028001871479769708294483637656652506590864686381413189131506925572622423987373863143618233595544967954116558709990677326698882525415636297813023656275764176918602537821305952758344143835337442754202394524924187601209908814233324046402678436786146755300188549343753660807862878693813408865383573014660176663105286097720032187971713779761107080187198268434475644029093730173136800127914436049496998706067115153904272815222247309946762764661268068302033657869362360576500929577439655716426691250060266800310327012122276351908500531233037026966423426467207866805393449950369029244263911391306818411602510804884641808596883916080496719441195958907751072809340969426564288653110766501513180529874101843518429997372925143846909686986087462976825318507152230505315472588950939711130926236836831154076022561728120939238847222438305979114869349296828693839128893051321237017940690646539193168726768246344042623703752306858431142616593687195403630992138020591050941207776349083043717010181442291585578354514375639156518294876973525011310225259483159231670170700419036352742684557841806505303355425045233634560187397018589936383490920734345224948011406084594047682999667042481345118151961001228274018454693954974501126364497980914665306989775126346935097867249469821139188479787248882842888204016677724142684065444251651557481624739663300770829983396794221041926857134891508918508940495204460876472859144354029951409831874728357627917486060978635307963953605194787052359148578415255041818228362169256620538396444096306396626298141166464506932761749906852344605597359860810259174087461328711626723349796664079900147985281846438474627708163269445069351427756367625000827393662299240692319584860785837124467637559825835542188051316916191117676668332481068259989437679080323191317014961966451796588363252095185046993902872535812144490369356456062381187047875359727930159110760788760582552903086078141891695410804632635712751942629004630112865444407458480586512830828591575006689996147217763743988320932516429173997702652099419743799955560868621784961693988251787633221135557867301407158053562977130604243247465229684949846506752803221543377967325007382469488071132471333526962046346699286170650435128871437393833978569774067463694039819794336859126935357461019054932513824858308585423437711728262108515408575478586775173536852265088778096939108723388547588956693361802469666658327154978038931168746027761490172770366678751220826938543956740339100826335467473424588039965103909408299317642260364514462206040153891779373061774705880128737120446733474924368156834748160401845824765310575138655166181435759392790898125202733560825875729464237796730293668027717158934278919800851380312362776364531844153952491612370154174862604334340835956139757804656549307937406535029048153034379987141036409277963905096129070007568615933707409185615317404546640818511151747550413085743722637755268672244447329173407747178722638760102457689503625945840388274589290614338084941417390772200653393729340732824203017090414971784670019849276601627846052128018604802440135883616520151444308895714042886691468211148211913498496433385931909255730872214394434699871013939962346811422417292450804863264153943858084976128394974649401557724945109257090515473821851844765807577110143778933602031814933235461650954124106974992972091730385545623455469003952892048901178729822244630417695991403894411752669892666769311854960390060226500688432869577114783721364255191005625030522062498439398655000576751148512577233800787929774142180878762357951254895852363223823101546296764390546468536484533508860794858876280668901971453002690491204592055707061871724943201651153095674068235872558815568736284886297617373508801046769107928997618753632029438007065459087829551487261408806605973769358396842032297957435974069989980403923739072551535160219478409380191046262973316384858904536132270617072006116080202757730856926886707632110178500034678783027960363080793415772940003035276568245761406159042502336396728330452063250812320133109118002598355977934871708931065993950589992852127024742848057981056662800180790669153269621180684304821987177878472789240926347433556246738608483490440124892112767085572745209873751650869304126659991754612826492403247060403901232486395614780598328333598442658054136372660538236551603209409653910813109220494341897269822894437210925449177419066217091623979982363157596165541889049873405088032061926664077921839572229652844424016408122153053208350513090339743013133301617215095477598093332917374919146134693536734432575331507579639898109630565454667841095836377846737304930727511566907722263214860035455513479682234805699480683695668209243501913944691034184210699988289180743374946829779532725405913922931562749218227802196771739983934789858862921534837746913348371993392243447304105820380095945338272189295852227196243170380779505694805500986557971726741710092866367563587149236681769327506713272429333794516953978742281349496920487209491177803951402550741008074813255930513714248700219168269892225826858518912124441696295622127885643258570593550779977701499024815339503610747909626522778279408285078418462303578744663601749963931823975752745060777791070828748220716105650969211155413628931323441755490155104598539530246447500896447507436629386399252431070549390447630873630178557127938616250350318043409515187779803837949860014019625951800959739828389368608336552288289551649281986709447692716971662970665225498721779185141446456259076822871475705394334728806511307893055430417106657454847137119177249312515349147073085097344225171062732210049565259574548709667328237504131946866264274912536537468830442064895626570248102475493703374092407478580668500270917481364033535949023532721259853801727327089319778299136816076073679180127482624956551765203797354681091089697703869165515696356048251996250741539323296586108196910046930530653584226726922244794601834760951854057609578424459246649548636915924731647625295083868128390923519997624112676096904691033376514748060663664222192355885206860734233910458035845873342096923841729490940897436164037891420015128530279078578206608169853797073238178807142502650186688240621829057832800777998910470867931708351497193744177597146009805144377194292215874083664837559054943996915960431103386094451147222424186828951863313719879217529625534349855517602918251120609978722942555931335615795393389127050999454157023161356963261290683314565418555782156276919347757473913892595039694776417455411282910087059735551939784766250605138442538992999034944069199832825832105446756759339946457311912605068899561573533486496761472799303785712064371304065673803374241524485113711476666182545450789152366283246584448204834248580980436249763104683401053480993487289184299942936497571978634002892619756561520734522110775556368669384123916154068984176376437596967873660326972264764890337755130611038558589327604093855400012396892715483385773623848633390872166508810029916909084905085096084655115474586983012139813688244739542760530623107449849912082416236870949410304502679048379188353842854999914352524646409842220573264471293128949860059354812736613945827458046900456799418173900636109651326548503950206816517836405880012340900494906774676204521005745896463368160021325070263128476896332104966617214487825288621450010804461416725346162542060553932886234239139814278665580293108428231789875324812151943477811060160827681130650231925454692662530717710437436706450114818789986496006542789172697521033579634651070270660585139874190622831681542838949683247153702498001612539889803421834584005269191966695083451063845032307599640960054971837704080863874428775685392467843152008303035114283317299728416925081523023893323030572724760581350617962338980104841172598477055634994097843693134817097735250184101983455602776815116023387486748260064474023062700565155222899659967175692345643927857088975379372974527870146091520932667107867332242048135303833019197309351642077519789694651449685465480102392546250752017591264063171447051752266654819454961993034523753360668914824587281750939697399953197938287283253285043052958377504515865413301905799363137931936226330023042609342215574607897535744596799614154590175444037495290424803927378511255391796281600638028518034429644409366011029108969378045421263755905472423677673306614284662202965884495002605563765060284547053555772660997539978653569644412883512452347438061228433298976921470167437441706662443269179940875247785453883048341202633014616028213229199688778314610216826052121838328691923374331400912576730846530653915662787971827592900563201459859779880952989565804954442568987528411946554370321881444544344032059467165872010505541171537023095067144910242481368943780193925731433365450929474464960022594932030162782394630495256419535195985327685874760444054340196359518102055117594511782478301119980752787866704159759316758331343979120497375026643068034054632937451663319804549822999987568941139228203002064841980226459711900331736089911035602511231750223858488692829222573035563999334720819336910812161907333760071325902193337711851388028313694454887556928632973058003674260562239186594342775604828544990851734489704723129909607738432339333438111172419300747033730757217220986784187729979544907751072922024574954704647460119494804495823057216203448479145044510569229912940740936763974124475888358526091579007047524691077712065747428612713734134982397625573062088033454725836313636158927368194409070503164435086853143485551742692028857699732903740226782197644478253814015727296338673913132234968313290913693302174666797521697508207339766730037049407606983091214918989651268200173241750678155030190408193952101626646884268409488825069413152003119638494212743328723522295443363196379433802211267525548694101622584038492663045245314398827152812010452818082094883675545131676760797203140282175913295424578735531630369449813208372950806982022252494182460041768156178797243968706168105797209901311093408062744392677144866477509836061354162261555273950206179829586501460365002367261167465860905068847368078953744651703414550273060132381999901420296842131844398807123200812206955206438989966791841989384749644343578246852985884245442185294920698931708385731774317581174891327484310282402655526374944516489314574235337658842957219944482534586624997356671904899559676444433263111206632425738161749361311643501712181586648189690386566575385238656945265070365518109156444117159618380546245082681557657269913150075817957943936454637718381312784094847681565192885065467511965759137779711848500603787883884498625698590620193939764894770549779020637462783556503361688353185780515732995701960968601813067891781048821383045980617201155265439430317347525328975864599321518345922065351439622244694839170939959922277148541303764505199436957159733915853182556958673031502430798046463684422153318353710192688866547084232302073219927819286617286996569404672839611588005386884635286775426254449931008396894888189113999275352899852146660994580459626525438817121321990309996165081032393221805826947708280021742356175004560013022190984625240461822971724590909850889194493192664809045662776208138007736797754907423279753818387550351154920211254317898175938806158128315545140130281159615922647930156967076615988219126877251702886383466448559797458999026338401333398575229504713826957361061953613924470895110281067835101135225849864183079598990471142870166149893671522250947360794483878281458910178554765155948460170867453793637457998150737511920860991611413940539398935831253601192429262143454812526529081379377052081192862984298548342131234343476585556938261652701159551893795565510321011467574254332520290978693018402123051858650182776578538827883928218259594024543032059013191663698935909661765662547323842131297052494087054268839693472951330306195361801321213254484100183524469916778622647506407146794545516980822339392171134424821699995493913177745892053738653249778286020102042978360340736359905376762180238002325590194124330849206599140013116310178289186608270877679582553418610319880990227021507462571629533666051879303225581994028734854194245496617381949242324504216564461413363742604302116791706883718839069648741711545826559850206709860195745765202016378642431887878413546783634581592504247116464247939063207094994666125318453465196106227364012193268046915864044797782954636927770968012450868062215909052518350988848157164909248261456263966587316620381587452714700851574877124365854585719089188561442960089016563464556148283816726364741142227750064567836578171773530336809020528619166833606955323957454511998823938253532235536811314742125619244613324601836668088863091618132910188223176917742298959285382378448103505726875671552387983279326924233874018490154141129302907018326507421841617455875881375822154525164569118452607905973196657485255796560685028501948231863105084689568795643445034365788618436484931840023753034865925281428443208341341006392622180891359856287303541543466329980615205547189227246144230880326733896984510669487848015742832607888749779312580981920933822261344116760494745926955751347210640013816197651238528910692470194411480392061773954964261140385024032673781741492771702381783678631972781931892963757602242387942687013023702335605256070558790530000722214221982046324071808601838505962574340820907562344390123881941727859532456566951404215926837277773600881954917915280151428556221337000393439640961594991244863630145509000240563748599451256426873825246985379205081925309409904635484504666966660721840112672056492519273455749732392822483428002578326858725258930483813929091738437214995627529564936456272256407042000906488575704774733644827002628923477250713123477509919597092640506550278866084829773613945076387065434206630614679513465645544191334181957084461147960597363647450791742445270381322949386408836206200064460245537744801270062299171739422528484443506890461516280273780633604770335073743982770679537192730477432084538672142437858345582058292887510371262550732961452387330163917746106869196335859253711513560857129598541812499542438927660548121301534999153754312649553561163923800893883635974983847783488996965947533419685376142474796993632719142994955691209307573235321271382452230630071576021833809134774402118445106870916212463016997530891995141292422475234643755724746619670071438383172871120692878748387426377913710297704632486790267879166033795592667389642853226866466746264694584750843060040211561252952207138420701864823164239226487698504676856732414258931945549119455594422579054005157110154622857390609308796061158644278911287012773041351806870992358501098073902597255970229119655873986080708449284113750781377664439289394646421513028260488438775512563151425178092804875584355639136018805404547225654683244961635915284556130125871042588075471316672147639246875835409219570230977194896453844276074178961813299000044577567428640258272469599496064174987391391600491448558290540757259026810790053037400243427201829739840595820840766667603137651605516056593204349179797298608661963435291435539698740796988729909293157596914557120703886550808575540393671873864999060586000656319281636534879707337655967050212418787501485299678987391809679917998995646201676199896760550600255141636763617034878461154489671127367927924592114639549283104834932135600519264118362934614336520230583779703246265417509339099377324862981659752203824389330996657246986785554014557331654636914176032995164459413993802484817194264179569822770271100379374085441431515896513873977873836179165293594568014347235962830494526363090348257419478600341201126226819200585846848647395210060765165873221460180041007025133597083469202561310157913161264521261309590593174264092812160949877018798034322346382591450953350685481967330503996107694500086796776156527769787478952937560070182862576945571022279142221675706461089257473925845886355476725923557337914863017774256771195379668497324471914382126962794962130099245609863993015964132713873103845992797126587012232961755880216545135023198201551190373271661701609730823936251548892035429356318896636044359657335992244975760592502885973239953051868551141445704680812203521148259562839522299668084219299667082587922592825654315849288689156067066589928941405386171693418794312108801529234980327284255947674131413989424079122904236373711451261572082129736023726458627439022201776189210632535036239749635855226672862688864892328566468607852174225674462473301035514835414237375019746597085798861584012729022606744602862554211871476626872446659143217944659931798113328066984946093267095576848780234344031897060472416893121498634790189748784815225442592710371073228467656135056248579627162639178518669026098039695942658880830469647929834709688374726166631269796394336117782407720291168034671774717414112358968421254985870654278723445630194383587288909604408957875003954022604598827319200271688069471227568470599512797214140157182486592354249998353637104710015581032503761255247689117786606641020677503942189324707595127077667316971612426241822925418289100898735486873409758070316977219048437946489660601261407488619053617744699706636941814831547093796030126328637989714424463543692474133463467313117131612036358213885774598094003171067243463605733937815459521497941269543034707910153961313260182433946177215000915433580295143690703488828799242459935921870165633499975413792295791023048820235250514284651378868121840622470830642914432016553547745284028428700513394728152768736101655840147579981209176397317904024515798297715995546005329195919392821965776979198323830467759940690278036061750831272639165478000434982150058225340186904034258493026062951814647705023851038071351972503762783555423381629159397342042393736427034600295688505445938066742644587093611077126994718617202002660368310320778569455722931744477928998508325197307183523756625680813391455359461388332215263796597134058986444014088319138908536358381206761613978442829254366125134427077386282140618232665665698695233652051606352823708350240621918147200322039255710985922006594637213441715150328852673311623459915237527936463533121325086759006281634420566829201083152471636357604439946451149224209654709583402101767123847462403871106423583166761448962296471774446377035397946701829522317746745761994598127830409942450969573337871891817502564856124832775515199179778747040811136808487425141277959052828020961402927837752489151339667325976462986305053232230751730637843022363127040144460494649119458354098843903642063329714503900970616910218536189312206871033149060417501806274985063817937618718535127362768358143433042867522277654268158108953835844613963691886555021616090196848823022292206472281082581902922962738394329224501760837042579335282406072335190149513745546160584750914860050578141432315957238479131364133424559715330161306977831833324040558025764693644811559067275024157800506938279781024176175523728301695588246050118122685631415077710276389474710390738296313780577612239272316131576865865866005278361242971350413732745532056959028443603155411050577333540683280524750415959538968021994776198132350281780857981475988564722321977192106932569296483864344066964725746208546872488616840084308098255905726691808397681420795593157026634488673965603604027562609254837749618312525226657007254586871995034636151314902410022169975543820584905861532576773792097147658043745118595371035181364741295208714328591852155157237647445814984169023565015718972708593442823276469776229400922745444391395240320496624154680516224196009100028390798377250693615396925571242986483778035850591806498099080633209658406018841903098746875429063532097988698708790403255600684749941080416431061358045166277991564876704096907618515110841839153279882674014669721516515730953174878108474215090651421661245155492774559248624136801351404651668419423458541656015542590895812420410905580435586018762321079421012543849496790352579565914281583884215119255819805735553837122347041854605057609294560471232682351827994011704786106518547540132164014905048581611210267594702446186636327454493796332407460431275522068015491120410383680506713951113207366303551745276602064976760940534657964431805973202806408702383371235263106899067004663430027067185936008645206792831359028793442144718836836533834477869876024007570878116372614033176485293181467789755224125671155118973497447715155399611396810752630487277833876758254727166160689650919150331185321944031413437991604261107597598399351756213545547004978111269685351304520963402309835711526005664509461675927455563558004099367553128739296741312777104160636830300313064449986392407326490196184047836662084073578563232599152425155472724354674102373811541506866784269193515183005036534762472531972400211355318619252708832134815217004291251972314160702731105596227746100968957712329349666660087774990214216597688117455911267313855761563915595223094286141445327909851460750025975962778238081611687990004089324858103102122886990362083185430457272152289623554662102800390000648797232799290043972378038110453464345195674802532994695922792089773273478658912279988996552937747330868290162324070211255506696589506078060650926566140796819110947766932472072231999000288924601400281901025180789718857833747435379115242428899191595432801096790966391898643674722186028617928231275590818153165995549741861359813254626963587445695507660668543835014813123517656435827396953348797972619064095469976783434897345986789606019836903039559881782299580612908299076643006718226179027513574563354141317213406894004494726305208735957756314499842764120715623939803832960017927978795977234616897012186101079503086428438752548271579321708088932264085505467796316498714992173653077375795439027066302335616347427206154822973603243839466308576007342503457934635278311129966148551210927450540835410558393096307523508664934696019209039630132938640658726192690439788721496701206993062782579534194773753156131250120592167216911520628364435277041702254517351266956282770650308823954014326821789637029677425910736985739043483422276210659332621635300663678103634039163669911961376521519273926849175985326054303286227063106448336706802332608386240284480271399222436366340705272339498590517625805446342726610737060358980240019227094250826542756975022709550770008584340661303917874693700619231619522065525655125947271157748397452310302226312221600902640576793173137286526405817685085317414240077989581094347667790745513499464974648397360043870388836640693930352622847812317636483297953638813647116485076009850003796600261610739064953280513113931987770213946058581535761453335150289769006413623345375552363332492071630521641269893334799905944595212581544359892888921590135090895975118572352217034909040995954297029880762766580945646608536787320147676729426354961277963130457561992761920630113572363288366814413756780606172254652934206544530934676451977446986677485911548302880169062518989469512964921543595347194343016336222937534803233410989072189874033373376601323339436272402499161666909755963992518132356458132715512291190447706242790582716461476253922991993992359997123441775701584897262396938816824315375143215980189016422962512321657254793700464839374189752841976359773655315697621868372169244033837420642267567567706478488858013053529164742774927172620883801176446484003926364919267136191937928840356348084637709843270843914912224305248740579387349937990242339307467032464278873873704297553319073947987954386135045616406276308985739398029376368775248448809976505902882790018472798162399526680402213287601437274793014497587597142469391622481605035110803078412006889460904944394784731105095419162441348998592577713728398410469742444383805845768148315390315115286534036600206223300907319800800959618315229507405364312765008349561093838095416136469114714998799181520121865461764676215004053196827482667525364412126425069963789299935474318393973142867364621061794451909043242292549535898247568777975949302211943855148753916238895051613819600715812721797736235716966371030941638058728612698287613194389966287127555920161861847652051585281489720063687414811675681790785054979675787611230108810806359404842465939193243954081731468361331265812496677785298819787264914146148311081407516355992664033070535765901174684600032796226512593163787989187114184450266613683763749949539995088215190660228598840572973985966565924811474690713186961083608124226624700148012200320817985884762545616214938744353276287974739176190792691790749085423628279281085475675508016758609643139048434636306699672619999909718844160106057805339382980517471971870878125183612822242138841935338869729735626016187245578260761790846622963426539965592599982823653005805801447462222236540264968091250538594852823096823580302917406513000827558741850426148495541670045935679425281048257017524190230014145706562621752200631062932169023251330439308601819269760721364158138634284059843510644783073995145640924442257708801762032882709311296081005591764775560628075899388372360902976111186068248779890588901116384390815824683653873547192133129821221401002278180163597134321039654152827418165582515796862039737343374065002209294061813219472981756146303329366071734847247086692575898411385588647084549898981865397799073065843877014599879266970975062691921281700288612383027490224707097988648092675377861725845588516751353113724258124523715361723699386199057825523232196384093541761541177336217038406850100958947258559809188194487259730245499141046602366321778126523322658190305689869028913696098138920112421622473644750764790522333343162782250151710432851727276334664804312236044976966292898732927030899136944335533382244629196681626466571741360750929640748865291442329413462672584047960963429601672182060894679100534462234369043949152675930588556599299718016501574208453117764897729827913903092690914579115430327648963963095123375691378620773149003450092902468961849500516156900481415888106417618892759940656051666134935501371021861920018025001329095212737054337976389665099987929750193849924071266360847180444489372535641554340194585201061502623267429273601319741407911706745222450765578522603358286535602631351931294910770593525002200054302529582033646688360149139181625001760559957026583538113563751452665531589693690805171195869894814267555483179801732691561732043703531308163009764737288801252878836124002504476553516487448146143356648926522300064240905351952929515800346610884686235286189347659919743743400140384229067680332303475551370405882572582731653531583526693518374509652159676902669445310421925915326888031717469848753107222613227914029448304613262487266162629150711272650179769600950871578340424117786231998750533341839309259230798596493068607888534360384240451063872503969484755619974482229738449050504968308145680900079051926711268477216053492527682179888644624810871377851118635111989604158627420503486422804169797987996828257413848821138908455794353856596543099402212870121793113090499817478209925124212068307507437714890514360288021551228077476035965507496691992965313351292845782938047966284345574982952770260635513455200442362359423351649641813232446843176484628705494817914037643723456401714899672026814383259728648611304904706824200938920873723611134593549890001991917280284282520222022672262062547715825313670959072153584348188566955777274514494520189293918059136958986179953053854348529942213810355081863341845133365461750780958317805237600958861207634259077983924942591849924624817489798053260333435119791941615654360479589090235922939576161967319118999966877328721503414975602258765344171989133288470779713013237933417220462823108531126295348924523269384840598733347359514373461459906832041763528845628400341324690196843721076904110664515641872170171215405702629943551244773359759748623649459614232763604736684497022492865327191795335759047744946386754647258911317134500949454704963348047063418813522730865712074090578369803770654690416129540840593698816089627816157946803797024167313139103794589962491211412295495048282937670541831480048879165170758887532640088994833900481660277420542322749528288715919888590423837829867763660033247714461001493716154064553884966503979150763551950618370665904022173028514987428573577512259798183089788709020238948357840094387721325046708971877173707034936355300861895092725195781322189399042984285935533756600119193384134501285413416771236995018054854431173349562112044872538863984143175009011990687221669068624867152778888880964035724506999254403951432040054941030562823999490429161041580996864796512786602185040897617850550121640009535602328592077131553771049384197892726878733346036124643493954883567957892996111829676463057157423014651934935554380969483553015039693967007497060503945065002701757862773998339645072941771447368672851695340312405719017113708755700481916610744515344927290869651088357280671083514317904991852269080046043309312242256475412675389721106796223153590303516717537830619558299332424988236125804167668178517965426651945270632896357234427606539077247036820176409102898299890832797547207006916504214954364575245955520672767714209853067775498342199360055420630920898316074518762659638592776228968613449737703766710927268477860925913105040927147023362934517632846613949348810239476024927391021566190597903412629592173654460062097838398686449017245654602639981742807707725165537961095600273119940410829136875584383651670837114584923911378497654125567662651919971933692261645832561722565023328466549079258471040925533773366850912623726021140217518498009587289835324083118136288516169494298758571899080128652801012779498279630504723232773133066151882372941398875698370545368810421443745197402454468869320653630997704116658190003311704218095457578925612332987326371491142886462480954944851821127259972015636839642235194912249823230776871715398967593001076392132466569504507152389167475699465717251667426956138468780433440642946380149927136894743287548256461864537160124608217164799669607011271991084435777580681883377870179279853193845604602633951561113865704391065859822047548092807270846948584319039500532108481256728832372042271828212351648539751402071347164343526048771421739926048910863839763952671009461464405038098631706391238073486308863178943958321088347752503173623629338383692226697880181215751702518532404779185157679892821146899776787243170599336473855430828471660783996676533605397086465887148594902443643658115203404749172516550048398567818608316055814972090042763869859257939457098732673970135280021138329709927984153306719326763050302524284544293764608333118845442176289442528152244764852873740909705959475940024712924373213687730494231875177208561892836683472521054508764556355988682275517577406960179470271498596523707632292106159658962667640546037566922829074399987694967000993738559308229625320056438728102951525587695085342741843238961435779150592954343416507756829748504649345722044191747720170330336000583839260811299432168048442837507186430788912026096143652271593218958186472231373322379400745102663482535885688352784057410130909773275894121601190954256466441051258985034195420794325504077808844265987004515208332906355860969688509744588560490955773799460141598998996026572103263134769336202632341980511173944732725829349747633927409690181424973816688411554671707146194179696299747323805232337711268869142916490149291806059778839510129546642506182009192361435428349825590570561810775316386626360915188901406769808509563990840094321393199712050070650185744947454674019442796688836350515761354804162540820652197657694210591733954328008702566203836685439652481010535664227475590184445143062515339356273952010771858305723191744687347317765781429520372502606617163391124767963818910606320186305463173362665236374438592130091018681759385941451596447463175979007456244954205057452785118728796299731761501318737414085207572880218415260250046887237181645266830217527000962171949807852858828448618938635850220755046848140323913572259662202242483158880753647498264613565139308446367507132751476539583717523916885908529504535096954472290134753384848218021018351030482694025825010030763298405418579436061530159104947855434094388255264685320752905573736113913464302751181371904824170397658420143460946953970675470307207897803446857464827302368768037677097675673542557703302217844487555186330721010796902105728820411633704425520048506028607480780841340429255039254329808844182425621045460315060418882343295661663145216496860986131298632588138783868483947143797350904767064102287927583828774796862607252672377181929203740192251505210214499700913943532698479345157091375876217470958289266965925855135568699436341432793622510935301882415159560734187297172830537375623849392475785838561951783512645024112092185373206151370182049385588379737045574498084231916278284335644688304571642328232079520363193070151424684109197966232291056921952072770632730229575938779016559810410796150706338900656354918288726156004713115813538281556666153682368036956690391317301543885728833379132615517228546628640568544775337660028018874712649436113100554304551022988893359589812873354323417539969038317832082020015115348390245033919679911056053947834843211488190462074510000496374914859048412208193230615044025664111114755897664005089609534341294010064974470505750563762683090882788022209619486787918553335698241215095227265018077473570544457157061537828437425996226391897270677833461472933736469120590721657649551493922871353184157115441639804222649507669527528174568245050850765168378144659111651006219455088572168489872493603945432790162073434338609281169735986443442674481173183834159632833418630191401795135024434602082393763534342942839156931005879959762397440031703829793725709627155123333856344538800831094601223479527411800354911034798879758485240706170868577239569284318378099295611961207505819228424072505576129298911071518513825529662502617903220156375440613815210010942454571167285937898518090734836864607912980234703380742282762931834939319279715630718053354055675552971220728203083863838105900886803539801929933625415957822577780611508128762223880740007705523443195000772993580095530952065236329979731100097187256768286080928501894000148941145915245780863894100450868290886234135848162095434981557709821368201964109992807870355334305862614735308016582072525271744739959872297036889344603879705651001777518320959614614698655037936760310919675761201192659126441611139035467541721364980024706592247816790571700213705798852790492460823640057604353671634987752109877108054842717068378729642712478251475387474476535536319016570733230716054294416461423532681982671036307783934519952424635133819723500883382549929278630769409746797538165371322437129137050476347595889346956660124452036534380487335126868864845672215588389430634538246068616205054687128670185336460128480401268783314082083178055033899903648687968810532569884171502933474208082361278130152848519997228828709582024580352228890328381626591045878153325731398739790704027591880945553301539259465877965732678805453772492258509790788724441812755784806667818517441314186463400323292045653471237226006849831745415370215455293766678119035285272246509835341610520137234321798687625705599987041337496999311672432009234835215668974797112301195392017829660202704694250180396783846595218294387473467996891507519749372308796290111054998750653267521245421801328604899307063775507153650435581349662322473976623761596879263668348445821310144485283847808701290183796862588009160618631293099484538408087378934043493495073703133427324598285634145680287546899071414277367193138704138703939763725765648607733199962772654952709231247574424160588852882648786435580799367181128761888705823206972890788106989135496013675698943871484452614102237589833889788581222717490824974485669730274705261264193329889431835269288094398629173254925844396145186436697024793167108294703193229374084868997768924416222732693871397417666488008952084418937867123042308219889516232676138134803221556615528044190616999781870958666029359922384184328547256482221065653974804899284702710597783408500532516109285716378407392706435379882272833303365860660354298368002220827508354915876955343781014146051657037425414467308554032854486453004227896939571175189737648526210951706678897059123838941632555176025610464326159642122255052852886883020045763131909441139392704399467825415076753386788570422867019127238813974289917388970764776755270412094587649411586949930806710117123670070899423567101804933470444894368157001690718574008162328651875642287878386332571005148891701299017478421512166367126135326764425090142167669903917488605541201415363067980053233447476013402138046653205901903253202842321519756687530387266247100431151819005262964014119784666447705297513528053766957742047402919005935150490913879964611432296785708906936335177468985134155842224424309421021257334895115338647285054088257565955150570894098180076004910413046319587085466496967647004424382672435778017274074269425999643119175455979303045914784015352108594250899225305067685126876955473990521104386954683541929912698976797924841765948202052928090459783791690543538955279849016553517672496103752968044939491594506008067994841977352191029599902550763498113462231069676622258109416407468518100773878584981594937056452361670894109443615358018461695169058420519858541849622501050233984195943366969478581176712392636984094280954270621116215328121703392177242045080634023623106855579871511447904462139715417566597303703740737087887909087697101747765160747966804359370160190824894243534991711767643809857142688600956595396633273235824520080177986873302693952763573730429051142805537651322003427946176700532565032856211892782812182358499852497598128462340363267001586458799813572976910244413735942372445788219602563738006804461446057304002649817866455732363273751272437125660097666438179752451991763211884746739860522709372429982809060643498303623288727940765865582094936150141539901141196722915572483226021880600504468388258545977509177421285810846161784131655987971177882406804261332371996113284658203700446618517610547884391762547959255341506165920717068450550586906059184519380052480656786012632060751455437377073420631319125178635500255736286733797861931667377981640464455782320792340192481189047927795265150205482197154806078155357507381169727682085437930461736627264306210952735623811153799221358328011406591628628379258455123879529938386769840687784032699644343622566764793611409542017947667653318656342446160467342327274236222243145660683103485611576884668498724887831486283930650724136483699349981835644673855583541762680426363602685301946937396837988320327676172573894521946904486343806626835330283175019032073228578938943582673400345767792949817975965504873794683708658826026427138945928120933553836357939158807579734430755832549327823656509523333230440330288215164375340388845399111314014480049924311781174065190093786717621874435304312158516607424804187779388290798839222412657191691490787287574030940599313401644134637068174950682750626711180373343200263877721433421931971871067617310745481798353898776395167800402487584188345168705780082532506675901088440054680278010896812092262516414191229130411979049127239325170799809737378882627647441639588908689293378083429239117075993585234653274714506001608218949322021309565596841883045920247716451428268137890220439869492461003914101289211310481717733215418563004476648269106648040055059964712852357654855072034206043948487454663564379056721647908301830491273357398227182153275110884465105626788594171261202278830867154503148679034585517886244919243725033752702337399875580176966412523024986754585800474142328810630570782510259613823732296694108478959478146256029714853704238174912688264981433932745905232718411634780039527735678319531830864866483850359962999163005128142317963458460788125485478050465466283212842244650583907980487070636903243662371081969537382143869957830264141792825632614488661004176789473443075432856417559066088062610184339072185937643018761796749857041575295419174013121061254504472100220531698926184460016527881439620016770864002269706126609952972692533275133938962878559478748520704224214987178167268256220130889784133146763578096247753475064156595815530944495160444860369586022619542443102098143683864555084379914664903618065937571516328609660441656783119623684719243422307727527588163449450016213355862669637024837190354427324559535108505119445811930006122591035954990922140065636004915069055424794943636356707337220838130037066806203648120795624660965600619765443242828460810810163163366610488739249196567478257845506485169729198477647516234558674816908654987995361758433873285824476364907110478963685844634145396584736140781949057098470601953650449592544321595124902500962936409789544774286779521584272457871921878551190782403879620005601402905690215001144898194206062116436036122011653681063318257722196837462798129073532837759347575773704348701602496826685410344629084179526975095507085364634171100414499444924217968745040712616890220251700756964270771649923582637820941566781951117277916674145070349869253628589400583757894962875738128071654728034458540258152042120370740973810630048829721224561137743517308174614061540950258913787955443742921620456903277174388595966900682815215651042180143215248517165105239789211701796310452218824018261032333228890400088228964002193839666752559855022424078906839356602580481699684321367883312526427735181790853061785248089591772452303268431163233777093609697952452577780791064840986784478020933443941058120180955489402813176566201250306782046518719703546621448585392985441539390530499639406903300313659484794269814097715283665329688809532824140031889669653537249577283787930086610115239963518050171371872157810044945798509125316234236119560568725856842583604293184523774160646508530504995775843132118693805203958014176936078623611299983736301621434538477552803428398336518836421111868190199628598385565774705804940547491194617079690978399728837230495735895908612331248952408876210691743147978192477541280119038644431817877074179279378068551315304205627219317463624942138169769874054601914379011891059494986570582398765028453001188523085937340836796859899988848166751507520467254193009733453435559670238073572395976623027606043864570482779556196085621605374866813960606311325914266388515110979944383540624797515248647834085087478816335166196854464964211275390759022510673855797348714821883649877501506206525786541191594903105146375835853845841831212426549567597364039968564862517218618408657980832441569923950129892548971786342259578355336051372269949178938389400566218007307940208265345851170370931400220178826180203237506101508311177482745780007251925020509170102458905507961304587664525894439812787147209640388303473202788669804535455985821685687024822620555947017092651732732939546057633817551663681255607274716102278654296991921158418001115221041876524364927055140104328281411406925846263371486366739633574406516131258965780570342145464263328356748177934075736744729763501985788259741149500800657304322032585244277793800834933258217896955841876181380833005888820005135049591798832954534209121807175120439617763773341653022084160668074682848662993948324945331963150162827146244369858434426255474116986773521169280473376657092324360732644919367318052831558118200489307492351220363723047804379817903301248746287119114156996063035161060786449646371071718971629218507999504978003206357044299843932238781086560294185849243587175297567151543675071611886191703434649011318196532974752029600392752537691075623229058271786317017985395963932133141933375658871710990927808163337505454094963085021587991204492761145603156059111182750699248601474893082722519784008688841041502760167579984695795435066016085179812830396080908597623045264366095937750332563995557186189082384102456045456681633928321655312890763087571399843276897433464360238328843902362400616235829871872719551468219370058012788022706402680971187859981352558433162856944030295871162625787005281206213108681765467618880591172501673120851785592374212658780784892366415786658308778789187768484912617160417767900549802402526804618904010490081077574063417048976589427020932297699972062166439974840510116078832793595167973752505325973342596777459491221962826654515011977247493545211409492718455494665597230305687354339581055054131010330608943550687554334574590312185451794295486148231066839314348368738270677035735723365723031997204510213435343149924839742628330380439186566890658479655488700378447268111834487825950678573010477090964915602650931640318777668888943878880795549537305542865343292542530020916747904843233879009460067958033204297335682473398464400287554199733781258393754260859231214552739114819767008546156597669852323788559058814276113220753435876278638809584175387304645080992449985415355163615937623037441881430467210196451662213626619279186231121519349151457955243937945985026407146545679627658914408348071545855610289278484146317572518154676469619982604809049892993424478529049406949840018652292410966686424528574891968693800986748223048566793481111834185435113674036051934261397437747886425937657264437487666136669848135930771751378627450055976307185010350910644002895892082567070312837895654770801895524814109092835899503957967923762649988353376213046745756260878337673230688838055232365587148610377813063333433842306755336431140472128137460927292636530884265887609076048820084333897202416992893796644683550074490261478435537314819348682981422974168320900942770175110180923221213839012444593031719001324479978882762627593896418667176169564926846033119497992543515019500352758457905013244289174262051737988960840604634707450320223717683690652073280889710833614785984122611792449027888336870358465083580531260231280394138089815971275392145395819861894585733793757988350598655318665577861926740394583543790569606392590918534091720803700845646794663624895906139265847250679496198705524871907321165093840082788180306872021908002737430274878552236652473096010110822255044030546502165671871709351209916491642279653094540709791188198056311406733837713150349362570322373423263305367647729624901414804189981496355853121294264142833397122193894923412468371736385337691132895536823321174186001776413659049840086535199016677181992982850559263869702056650459085985554350633349962311130402774963444316518199205897171039982300824868419654050214227261302486854437505968258001382219107480113839975953645848828311365471405930277713722117545924050688225132521210117315615398830314411929558385782230247898389433149813677969742681049056579200174869728393513277890057365585690854814673522896634538591332760055786503552703233875687154844663938034342625205414279866590426249475381381907208186728705072202955588920103118516020015931296205717972819385453158749487267811718937699337122338460702814663738143279173683672827674183214833543320240948976647768703509246596510760482488810078180141349972076632063502323889202861608001998116288474364352205272052601715188225096363622780403333343508727092712178983491032208320118729716171549275006789721589513119067946207497232127055510106654607613963346514930955337204730545987997322639991674819938269663506857130005218348295159401429252068999380502735259775873484832279625289531795665584393426844120362025099735257747276733164792391806987637151174932649003869453258276749230502956253542253874173765384355345025590318002101252725722811066522665142687972372370379328951262416904888993388340679964469555713922016730248799870480153407487007351583115146864558478910392426136978679538748072604333843372479921763243253382670771174607047600512034801200156960488317290086614015148234721940951811191155313220207166535533204272971577050250106142037560956322819178288900074883932538626746205796806358510422119789222471263571418455555918976834306842453300632327452717190428561491227414453701847475007002313290378139195319232222495802452696560621869703496587450395844568296185104593349623691329738609153054270813087931014010781410581890324277248073168822619964962036810382839603094106087214770701251989888578267741306032792813420175471565854402808843380147339371125298069949147447414948279193272471803933332849299181744560027775620998422569334845964631947882611334888820178260565374120614654368968814111899256132731327408928733406905251432784282686599658400043432320237887364742990394426245070179061365315589213895407969867009930068016963857635372825829463761006001812635422153364597734564870370542220194241116925437776969243645331532772003714378088113799026045313700755273493563603215598147222877797563746356812852020699542215125900613475589438961393352440920319038635807798570616094584790878908746748960020702493648980107869520786084505527613632485180034680785921568350788858104259592521423272715798758610936100630819924964104271537713741130995560207199438023334583035858058824712960923942417411891258275565889934973131404881132158676498219772118496148926242143701995001234974786834852845528361249379272087866291844591992731729170003520310939190336993703485278675064256569920750810895190008881390257185435633638505880935113751005716488294432259129132339936968005999494680582140821526640035918704445903892242968185955953134834629181521573237718747084186887459036814781037233954926572016491501550077890896819792115614996906455483569467720614583101618343372594123251407690863419764294409376853609424516729501321088634775784956181814407137244371532717410877964002101965851349443239292781749624555288795603657836456030484210969360961904912069728225687268223022223556003436971925309319898975601188646773257041137545456206606813625860953567071924293384316306469743540311404332870883766776557286666444332513939920631883964077380256885539785027662654852272739757672248563614788906340924896396367147333839865343250632007550131741764206312790104295340507634024683583971586377324047699847595821897908515979911913086195913451123134476340132273620279195410980606043022800858620815876677053245554111205675895550508866310836828042431834115351146158898918527432016815807680505936650097014539200722432968877961955628056288125136732960195485674193287671327090066167521933786814348824146340631822861173081838736787647483668749223463650088234587270170718867976554514169866831402331824527453960401869762038516572972263284700734794076235646067206214667399627739568626058231682744801109142151903904156945217690801428384846237745863660908016615066914239673922806801269334437183994836936544539966299258202504623769344450919559184493659687523929280974707870291177377534184585897713933075580912511852119894894590327107643587041129299937292249841287098043497672734089982307096459601096134648365774443784774371416342202952227934060561141427482462867885817003712479950546222779694223831997554516785984071460437141168667316044281705687064799929258617588924856317339525342465733951775747381412443847587313704820112182387353015685340173509830033217207498071301992849792755538093311382225697008139299657629216221111107428118615635598362982321264863450037931630331118329791915192574852591861043795916336702817555450129666487257240683062172076847304589500164662349403589119853424789215278002323047990980287150188730755327308515249579120649075263052701927707999311223951416348669166172688260197090113237996436373179184147425865802235824267890924441663108527809026126356865403118348279887587778359060156079813083576868926458984799373359113672298587449069422580455844308586707872138825618466063330736702086386871315292274652863962144332557119170985573553405126465408653944463971889414887482862634755063079055552990222459611006223619716358006126580229473360234241029093056348686155760640483279468750576742164204288723005998304826651409405605102899701047988533560353110240181419219637109521143641927068567390060882234906718058642963313389171435779131770507532500955615822179124691951637615244920334781303089969725114772497545247203489587075541174175345309527781565260875397260868566698583528064242112661008192691387290847504550922094828384834754789900688069922221375277222441577154928465181811958652842041776213402275140798414391594530551557269055508618834483429583928630991079481256259975575864853909354563373438812903709873560122950463953858423257657111954214408330637519966071395263504066088851383719751394131439375882210446196389851178312176764621000755875432391301740331554035418604356328909214819466206450297108728360208277123286082364203080509414543138735894485332892049399854597722224871451381594252875293925767186276074922679046758835261395824209290275546400118128373519861771820481624187636658947186997212145922444109339129978455813535939094061879890405048553864321024037998700201245275784302374231097227639856757211954161674030897847554330131467621994961890737126320122728086409457685038188696092294832608821952548613422623887615649472835099791328977598292653430223009467883394242004466802084986784142988916927322322389494892233099480991584297785458812567524307201972494255150536144466176393480591022178400246219775469249353355131039371964116359322376619335951445237086688768597889294863088918382457610076871878015454857009668127305631867942748582971128921478729568463248889961703896854160577241129550093905135990934415256739419470278827435028633185562556821195498526061032341465666233076714745852522808686426859747714770255685259442346527738658217209449982535481805661264275922613774813330298645371928488137780239656268993363410941535341510622672717317309963913461177877192415573639361845912856215713603036357460400912695224249308930070042561233442653492749498768652215081705417960768768749001387853088973078239071566858358924942978177511637852928827273026989795251635374864143066078533930303864495885408088816345392873535215683236061515142943986136112143559202900731634794442958874042454633380487638202591144281827506587157933963125978745702620455647170375390459542685063099872405028195416910013853934621710101608538192311165271525757651439309308843736604046211175931648862826022877925855773326668425008882566477683543141144740518382112914058026001557658924299646294390969427308514200663958347020482732459400953231138789363219894886207103316078386510091226089958212177122254403041180293209561568278364274492928913994147185929113151945880089868449917588610623052882838270639312831886907138679759168727232635164540582186562124011503924148193481052529845889535980512052823071550201133938758732292540299964492761479648005159671647502730083281443872989058284812627462340335875479134559577882521386515224633554519434351656120847884061547565548119368952950959976557071496895574731464900394678989685925266376882628889124908788787166478571497336279674670904183049110437176350810759886371735536752660354355151477717038482436839464130552866688224673876786854512708019305064159371500620589307202415447097352001200960841901684916909459660891575454124030537014375523598994004733893212686336949815557355227740881727065030047918384201083021776345943472512065943172415651020356630512065738665699842167197926659391633015611576883194546192952021208109648500322515713627205836579226866780717859846505218992019148448152464817856137651251935675840145793311295519515814206992969562736261756274012872401199630943187978705498212191823609705584530146024905443768679665792891255031362975265761807929626594924795058514788075080656437064487392227121487598720721194095483923971530338881068654223495756241125985436574042208200354634171439954039019447219917143565025638402740267916445855968224203037278851724830285078308503737331603410727410334808405903330963170303147768219455638515369252704229879386648437915978512366248464519858395173941786449248640287987273553522120791591484532503464434311853634176861126303687263779329519349836795598086214161696772215216742033397265179788638788107868803518843744692740071533580886875302015102201294920815789593991898830863758415106648375123644701918866816495428414804566476638756624715863015233394484494183915769066176890514679484398031229340077161639893542202871966719199238183124247353860656820295265141109684339508128136874094973354104529343514960913833425620253272047115347355623926663462094560202807524201678674272512733881273679780943436412334963624460123099944977708478089741602193854744092135462302339132267774408969215306898657814120980593337783902151131570455674760685555835979953477932255543094511969591889914443432270570396460250565635430449678080348187085286123764026219051991715310860589058614613307640700003096456771094349040832054991616926554906067261796995318347631838624136425967430647924063212560123545990016270319015330929635038569928208301382587819678126737821394151419275677451087915872076784112422936306467164097854988155664240222799468571822291544158985122249905793666386390252691530886895095719619980588363376167054454325536175535431306239754713241133906604188597580972451940605966916933457240983314116680470405516647887364116237601483479289593536871154314562435814097833750106594496990071920681419088910853128873252389040356243791346217085643044727592013293435088559109537145776042879207875620505390863492956166417458871797596576435096952432153212904722845816048134474810380791649082537526670700685124339630002030485073890063242304653670055411992282756324441350765153657326737581558157090787723491638667376404930128884985702800739959980795618801517741446127663898793837591856618141576114629255284070320710759607945689676012024314893721409500661536523765438276569865380135497764370683054914815174867852563867033541418717604512075083425456681882475841304830438034903678205232806786788870561419716245445620092320721545197650591857028097897669841737864971337535502922116640237525198787981129317839318439425156116939685175173687290729006230963339513388453279391907382036524072593985691836445836172758940065752314399197477819785210680741026074072416376660724362030927285421881016198205575307968699866020746325232317738542466440764457726339754162764328097488918682538658699223646656026897516101674096251495392924038243126157924197607592058583609798042284924393386110328091887422110204559436706706167147258571729612061600226714064564093388477236561247682421860751703183719074306197186591439340042487047293196161226601796813184373630055144509208229619136361132772773341489050029910801923936644678957568348056828113534286059902056818260957647265582066991901039085053720993871110640146695714079447874712638572377042342804596823724729847453288712814963971401456237819131680435005734579110595947319477565902868723557207964065905320282850938123443270903655789722049100123608194632516669428569991601420545212765665145848055038984532063674713962058613306116586526027395362342087529897089926069155404490540531966740141962095064503881295014653107361566252969620808614479280472680424219919230550966281111477504321934698533633181025323375102428127423604052388567935904903984117830421304180945254474472059315754536451672107401439809058326750958764669432862003392093379198428967754399121207385000723164593493623097422940736728332491665391642482703999911427807060421813287121959795418196234318956540335615040764131666351892496253142418114961153723570608415779220351290385954755514945319091437428632869708778517144238695510830512556353618049139639038482855559122843726823307080205853190710542034874059941263760672343117570039835123970497031141807907249817821336538946492948860656698602078980342400122873190110739301633472244599257075211265512739322791028426877926747350958047042895964229925674350475220914349489810014993082723626375405423240632851890620822059406367126541161399614764102867786539310783974497969573710548800151256007780707377364166399144454081872147628521345198733835403013179255784651781498774125098656148851890202779483430372640937281207470182400546971686816642056080772133755849455179665509636730943377794622793941414201921386493821176404195264044826869951160243518575891200002511709537648689384181985848605358097276255911767817532055750989647792122600573757168136248406551919426953387691951982092182311705000825679678179802535918810533520560153803673191982122124385645710324153439941677043292568820799637909614289829668074725966089079977843410725738980533855925738084471410031708434293150342911548157366984445637406067280643718196130409883030619371510874183345258083648452493905743297027784912066428378397618081182864663979625077759914478350221744211877689099756752297763358525681600972171398328711591126170423640667259778455979354082355490704947827083878057539053843232565445754107725678610649892425546678648871202409530280286088748613515919044768125673057778385921143075778983662007378276290093946382088247556580049375497720814966224202465514774029653140382650719065847229679088903960790586356839469387138204086323265167446620200921950701970752976446599631846398194419963980929454065966195046116544215792450519702230091433310643294679724216092985509696441646833063682579200754022247785300830380596442025452490663733569674843567489024224153001954435786188316908749770482500917222612419385234368043316604849607112875040967486495731463351576270789407170094645968336782865811242163588354242013132577762576308935836135923542246568593993875123712845012325571822606038170995800510300530030230802198591217394225018497705859426118317897493936855185385436343281801101767526906660739000837073823598751738018867291557681961440843524621085164256727442079093198335923803596314026176018971439812689524614929165940729576467468957802316648855400200558461275359523829120169164291823106521929587580673163423752847170338584740420049360989863509626156463341184156919283825151790311847292759945578337726671526390512465663450084253550752535110828808254758276864959037331846889946551677787362044062694594455943113878201241269029411552835318679620745626296987820380641283738144276740298189782139660926986798438947436712904429579057600192764596526795119043577298446242031837393928604853626975004023391520309643763095570107668386885400689109518873655405811422286133844336329233505521657116689825297608369853264474807650420954602708365041154649630712219312848443140961738920770820366617319879537935901499556195522503655001905256176901136413965230448824893153827760498486429442568927247199467447840052302710393022705776015894773022660842517193326294579119929415774098291811934892837343187279773509764590740651814775833276489733258776072806505639733558750557061473112948223992180229281461330170355290610557351002516904025650718654544292775638269463108124355282567522741832044770389849039602270784596039523319912160685380779240622751008424324374797284586878846165700890138013904209346428380617032323645385791626101551720673533909128055971340289864057849690003067907861970858140258013148533896232911415339934647358401017557250911975869298126187747077023777614680225481206359853156494023922088330718351301264463485168999152345757897615698009169717897739615633731014613002011164347067530913292558903815770417239811412137575084741655210563818361501337580982496340403560038861763496406021992930918669588052103258998477426635610351017056319688480333765060571558708140732168746104114753451703517106836703515067520981534828475269390387205680805652353197095295034174026750003890079810018552020475262384837141322687437282719509328867341525877420376886928387202049327302590094383573412978719394918569439079410210406298802149761472141263317419136033831582218007811642314639056604701890924688781141068035200400095803871685590637409125141793566797796507292266919794435378684249052055217111928794126509593525364254610324505068090583407289788112341125341015124949784458176305976883972106575169434527415195124515713866230394540429269140237372607185236626653214275092260159268429497441766577384885413205270699452407607917190087412934998854227231309334622112595628783323332689848806602125995235825445490183496190376091079331239254466380328119299951773798124949474667185347461969919720892697017401754876595368391451509041449430588047137523886678599670129409679972184110390627423389564970863865176254432416101396608200328521046987762894914425057084985760918186005578586350803815599123181808743476231773361476763210796487065894675712391237738257667593247646211584154944625243120571476602010101282400622174593425028228666989626824507600695697510182633668737448255765682460233443523807903120200803507623074864335719268473477659417839414795680313501424675753268220073057774397952532078398757084150189795665431478922347155682909393641940452221754054509281767689288260429278305898059701165234778617865167962070865960682587747922936864196372116832393792459062066310306387711941280751551122361007067346904806991189595671121812524348983161254498870148473612431672994967775880403073679868384145273500851093263131972736347150779549303786723186372954000039625867689974694225333627455624596931607824975478086331445375758934532429791365791696485852502063417949085110029562876458091565010918784106282119963561346883612274627452180403944216331166948116503201985660945083959240435841364680089098222065309335733199271013609240747112968544509113138446222138532635958502152393426476995898253326925018657662724141527293483150663530858016645988941693966306131096076067270766119865135361528867490329901108857233933225558786151604236079569882489476883880567381035867338630756684220916264452579467551939371945396455735915328661674324382130326258797624234076145757198366423167412181871507811408008104039243776858121335857125383773874678914107340256812592600426419013118297581058031617190579614105750347293591751105100495590952512843963633058644031749734046488268131513912347426534811482434862185977842845321001627326362748016717241662514186608134509463955253938523586007429579863438601897599873758683387293042857427295489306233889465057411434921767670934365508382229928062733700581710544777740481452012454191602417492432949610404161309050080324122607121856330874831576574893063121323199627142388953301924476400494676319246668358177845797435737589962156471495993757365209107629465699721174915085208153535533535944702160043433714009007987271311169353456505357677107003987365291743159189373811476279089756036006242602154264464856906961147397042950195476229615437529277694006190486980700482231941441051557512033260821911662549328265398397147259157037949964058676723980265403092179283830150273380660452872483407831334344464938479185218282765865313338581605340006055240592400937373653347052888258562702346377769656671927697274532247540426294441147871072624702724287167510100823086106330330084829497742177350720018813490514831557607935466584901407468595554231683065827212024577248915459373474823556861736329135133651899935016740277582133708634489734806695524488168773515342536334552287236004085345337864821588099726501068657833178555160419754519384967303692832364004764998762338660918906500394181137603847529877221129943315742328855372684204573503261766606451874645510622548895916321184203833790189189861501761703916176546730866199794790791908477191876677853048806026280418550675889849339819938909696194337387253018873354265860319163348596449403375500293391111100877700556792743713522349901805365469231271201265665859672347543374382834361718061335491319587756766066907520546962588796468031017434758491391492659527073432182316703324007355575072371350316435036008537690696814679644523501390997328924873086369521893951972592327103254497714653692900275086713222403536809598879661029459818926037916458685083972186969955481921196375869916735359793843083908778693871420837417425451208333075970527465689248192288579342141147613869335912105738430091191860751199290887612037739847246675946540456190294372779180125638347740562396982577044086439626092452301111455291504817947141079987798680708136259085466640206845541838120460760514147815106041065746990706517655623838275093731411984600571643735698407263018857745105737892300428788242111808638676282757141886026494999412490802401929060481868752791537174235193349890655811102045543278769057864143423873046551859860599055801539948288310437517244365381046996837362717700100020210425697029056816610663993117410443232662986265293645696856914766971137322878189953059472700268944878652508970724948621875580435623118325176690477067949936073555822481308900976688761347615820411873243580154388265047276441460872298502767837573118019180687000243240997064408656780368597165655986959987205209777640426582091057377396508573674324286398328255751560244984134486515788412185260147823868173849695720656267019164357724762132283398418890806474494489179796423640008912638004500427374172356677080334058212657374325534738061350866990904628391320080663317233597846873138276360811905217737023761644560451671667901038837693529769384132850912189951927442655141193046968607920882918152820503252869655290608298530146789447230906684767602967682524667708160546072725163403620391074862426927563202987368676397877497293910244104638229024696430365786423985544832963696571915345320363991957772350880305424503899027774074327783231398520481388765862551958750472070071193350772734244292522747816460080931610682204954241314162973458678865823225658363841030409731696480388232196503120223859579789128325066541829292739981982465584208242750998247558152658879159704960550878397069914818731498593898367311690354141840784463498721018403499077700105691078808028008755197236750179713420341015944726922708516186134952428997988428330326977062573658281246270825952477080125932872245342618030761916882463095347812842218836489302305963504293593171973723842272231127040427538792138310982871182227584569932886373390326341208152410183777436289165355471040017461036948121476500176053573802949695364576925779493396412727004912284236461281014526362694180383920479781292238095154000595320854663575614746606332096358776109773626895241433409894422572560935305917065203634077679172704716782802559684742197066206503706103612511724980305197009706869518367691092839795379056823088295392214656362043329904989908986030545067209796208044874273502814209368391173652456340732933668981915536075468161889595947858925409714661782385297733142608286783522930858073888161631800128473236815783909559770323554756392871523546524660283707851782633170736341109855351721353500721697008779049024769187933184915857949426616835796319970967963675256083645293748807760044544476696772141475656690561249973717920096670900686925063109864848971042650233970629549022735004341772900229639800359887441316658963478774686761014463839624767796478634945721127249715594299313380945293185957749051794016456622654000080300413646617375958847553334269508299406138046301153269094803137496160291011871044427117932844333944307318943719642300109836797749100611646553511133662229564724049647907169571502559621805247788482659536339626609229285270221669763957476187826946497761860791494818816116064141645508045079522760700090714655767922819357795705558148432347733539701795106980731261074164896487857886476197857327892250866826678201189624887496987966644418053544477900580703762250788971251287823039240508727083665112526353314196025061474887253428775755794477011674881138104383169959246932078264997458462894621481866173524763118559481740721454440889334966272076800167691112900906338595710960031653345092456714711987393571163772399949971777633113124994164768069710630704037881869541318757590054356604452287266431556234411248345029763809901604427767427965980987197526988217435978857760535041203805642990014258470148705868815929272898230750251544745696100005501044027530857825269141407057994221375526664105453012598651671040813407928502094787998638479213659014815878952892828449563436836877943629095963031013651755594372057342945696278071899549663139913105198714496140905658143391408311596803666133415225978464675562245217475829645191100973130156428802698682768554103578260703818605867794452857091796919215087000574893375978677732360814261159905676430922498270515735520325042661887233228286289701814375878717413012245523742650196122069210695844296273688513113766275311791699859286237927173753922842719257817825761824045912253209852419744239812451018528180775603630967693768255672592896914004101589151050955000938218520946131097085434175399815465556398342751274280534105626509590117752853748690958069430522172297558394015831163154435480504091746200132532094698316966880714020557213649429341400610962072398757438010523992974746924651094966782315596224506616630706118764749598500290807434174277849856436645081792816129202103777149919077785366334854106969930745563962640805372109668858223018665189608882888523729956953523945365018726140630004914372521814937191706904646237307952141397476534469437065358075217832930335535604221440625238577645907941738565647070469042706233892366683720666849626145653439318460818188162604040401602577480628042766712093306536823555596807120701718487441070881631035618638097359413889575615210440485833771359797176228196842661374430412472892961292761185973482753321996753557618588921570135155722178659277579292901191475070376291687218925992379411450601971339929506568612531204292143415545904111702469757423829222114456012994962141252817798485058234685346326793076311637249252484719040023025922821860195463182022365849793102053336054649772587506619014955934077882640746237006785435385117398774066509460099711098350979856185570132193790007270440424938002318177347552522589666187873334141101750888813629443173501892355316843651081069365766989758851589039678554857556315964732172114154866170225630934455563191438904772537248612934603857000724781652318518926601580510846223331941872365521248669116649179553632852895148513740418240805364248279243074316155739148339352958366484873527761752115513331716169797107537599095802755683834012769888048841799756544099456191151728188409597811174096514625347777823171197909657810734609753940343649236153154851072529314141666414972969037138531283258285317149579775674305538699979809460376537166522211484977225492459744507356781484432460211918564205528671379115874068163238051514519402290928781159263197732150040357848015996610141012766311011306912232779012670131745529807059870892878671849171045258386159577713048409466996607279656873697770431255257505280304825985459782296689979430825465648530592168634173249795806236980574899747925859773977713295521667198330820636679585525444551985649551534980744039921037836669186314636709860112646802754371483064319206239942425119063422239987838456306235863636399736164354022100229871706633954519082053211879671044043050599977990781061644962277683896334091177870264084844462612914570562111853601942266450468854937495774311582107967657458570227628511022274879948191876227011974594254598293081732181850651326552813312421970200885315485498509762463282843100796099465751988621351743015990374866032677139514423978782262435098291817076645284415417851989736470685165951985352721929946053902872376982687109158997082465097769991086019637665138303173206361851440225413648972542231737021896303106845182468818113441181135639750132875597732729159784317288807085555808507859311147437339709063716717334631727447683849587141858694983635501120133717294907330221537594193844225670700592205916839143886504351564079531258724563734642315248224862475186564820081996596482024552431266568282116494355822835613243052482343864858676967257511437291945284006976688084668976001341135555653113118633524135153975846659124481952553060331437645909654230789967143355265117293604970578699819602557752868291954165574449048387927749961106783442345337425059765440105553813513005480425249705525831164356001983130029146674889024854812508266100154054245197477957500251823224060601201471731028637381172175815035904218660069639594594213013945890809428784292654503418127617889254902703752939799472212974426077878269237695220574644983627054760281018606040029576745077907947535797360185275182611064014561808326506859497696636722074189685333287572387680092198570818279344488128177364523634145299629818912167245243796931514432437478872463068807196672736633157122177855623207111476864989440088719740495227668954998689139650578951159859346179167175295940521208047518781546448528236860384975028359446731663617321056391456884466129241746658794644291840121157740185153442062393613252620133247817099210072669693719294186600550519473040590237219419982258091691102469845095377158084799844916816869370874673716684361833336873605114178963363903739837177332432277314759040858406835182063591415807156880983150596303622003539100134709075567152813432543501251905111663312558929026261679848151657393822171613662529660585601628928902306544297819651524476948834911013452619194277022851168803312143776693949866595024961854371126588775888709738738966060572248125944706474991939791257694073422663351262554174987163332649136931093012973921615384320990869428428497344580493808837369107391552962067831952748873631598393631742220028852267358546243272534818112609866668316072403807332202784540530261041170727528402947108362380849672685885434783188757794112423932998536260076943929311289127828147786898902087441352780258479010591133310583174279276439855844329200219588066464442628303831792976411737382049766540210934640906394719841015550967056214182703117919928460591374621660527725408115910928981960823419513853893966289670297324464919861780908085905375479466947920011236607540653020119221240233637587793490867585376054728201639772829252001518214505200011328731058146011147766384608579675823903107272968470135163447589604872377148726901232490299942634456558346567995435057100052472922013863169757315815550661168359305361526630935860120788614651812161071797536422418136507341050506939258773637519761301243768445509073962054185671131960346437733648999135118991999583594644472184895769643685186774697020336296336094998533043380518191438013532068660337815000860342899478332694208127167611843301250943498457305175490387870867819970434546786005282058566724946340950496271677816774084847868588899333645758571785921611054923223431617384027461830038359857587058890142105837651216207711347746711483679943005134121611495646859733950634440903395072267729106334850614343720982648090463014607802679630089993911543499793042640171955935971398658466045592437778257338766284819283777987398070572126252310674788076583190782682576969611333790548189969112453246861016834404944278364362439030551782498602375245207653229826158230926008517340647095045884577906656289885806262861422224749393498319663979886759540247302056062476993349814615728100078826712399050296752623065756734843957056458202622655552007807195329976046237532965649908263091776242657151648507055835450918173903727954809887764726321347177599131774696734640026064927519471586781853907811907692679996459117304438444299899105220707545771450388984135607632788013243202011170012900050631590269547101638401742705279855248982317061750267198385030833924824425774775074587328288443225495582484932845797061991314480002574187845630451264873336916859306330070246903753949585450597888163731750218456382139528169003554943541672039324144163668425068236604111916483853426575391416784371414658328290001242562200809834495783297323137571578485697956384273409333446161835758124501026803792303708201413067627645134243979724591129751045621427223707468870088345699610790788988158100076535855832672059366219147588188524616599823695321980668787273620296254420853188976043250684057437170552024566539185270810596165440971757722539103791132869722878095814396561606119823228864101101771953430271800158779177324924426012731382743874577107837425672910354003561008201241531654456410835338571746820536424124477763464024818282538996614767158759727583049052078560890317757828025960646131540462136094931844055210662774236362440607855489906231360608320653614408325993073433401038502865142963128202595026038792338136541747538694648977566954100251179644179059028321782494844537654396082805121567555486419596925938947174287178693953236783035932126647473127971934356649834404985493767418324188568963288504111706181969962839286094183243123976225769664018987630698172606187494943584922983456567332054943773469660956255889380072497835351894683427099472214070145018315580966045011048827332605555356566658005200768595261998602466833546405651775570094707427863187383700711782728081180188476312621583791319907033385816896057150254382260930207389799242655473565698700690259615158981852855113629767704916587346512840319823646419966240595217986141880570756830220178883889165902343803039392289140061086784128101669852405952302475633870734908570211777971180157894336252786018068016428687541782765785127496964852007204089011235893040461661834610890996585307232447096263420335178993758307062184174963835610770230225146142447643917766430662062123070665762358247521664705965825402509271055600093775209313398421039788601160738245011506917955578308937597466362433773320541993697818819366310661590047278319456581322527736391474099904034191940423073716643353893407408980559589571907369450880094042717989837067711540665427358434680401215083228304278340185564105271936763481435339406036944935491332166513613176489093318369598004800981497505191264462697090639446440122083871714654017676904535838340273792520048081753357480128597443383534910945076635815781034981063280428247522929466576019532769718562192894839535838744910616615206158054155643732674986106780850783560387188153344371553171230782202240393648092959626959150793104954809451139678218313851414795534878795177340880293529249737686787943742681285145811609695143418439787175614462820654780128883461728574886022648845942153721525078843554724730684736817698087350480509234487576870062607022243084595377027765125679016069080624623888361802129778538866688094729163593180193472366926633013149395056524708133239767156612194419250434936673226248476819980473378733325905344013945875381536216340924938892349812385346444709406551682755806457845913867176409371376109374973697956083124296857746967158116032230893114175511099620234336286005300875099027236193382095019901798820994114931827113581869978656537071070970355876729774536942803909295604882152970673754841826617034835735349629238956480210576932055603803564423186813003351206763262577685744635644225119380785885312799264414448436788148043904162852721188596121440045165542017087453711775910620480349975737007534896155254373586750862198456649847903486570569475468342397523359534005073677238392610715659127109272759255823418262379437026842899257548799803584156674959187392749913427412822944335220807201201631390553348018121164576286257479797370167462712159075256338208246640263526715316466335344789914021530219143275830610086406917540323152612059787457860124063022896094071486166039162824978762893484925275413563700330276790473231868911395359115351051633942797578958578158778760752948002027339596363784386677225199467227900143546222987111019091343448997675242693707496626335193396103674861230007779507725534550235531382552297731583050241526208286212026946745778268106366930041116554554972388828153934868205234591257736413570734141412199381386644477047578604822370617346902122532910584502592977042276305234185947408232278604450506464084714584573224291238440591220631023622358637488239968867670445427666593961872999137465702901257254702815472469044771751359912434130923957455881594076202103864304736807000287861869486007088123251827690613387819012160818575331342431099629006177308618259554279885182857974256237750996184490041558007894639178078675837993870790186621077482228080493298315745187214635788817075560324846956173686501100919873984479486930561158825384536884043388207325439098301410166457830300682502944828436878777114290522726523687374465054238154758713799195069054900680015490369684910009640427826502807036086504181024383652839060485082605216063648297220862145178227760085548302470679042979490810852467357102543013763574166778216009265008713136169315824346365484179698695465748450035083603069358205502467943497656071199841217728970133562763362814824989716753957433090770124016422507708224398737221176464096506241545161921816444874586456949800318592605273547662408720187823056211486341792684485247591163806668693732934671937687341484194678560504403777384427932559683921048530572190499135230721575846926564048679556027140412780640470287550696900943780478009207479058646801935852939023270588438647557956409347541110750007029694242605018577760021367328160810485696590429949410998800993639066990938559312061965815323831817494973530323241048437444777250752823982484781381438077987812256067052378004785988994813772830764267314804039620359369634996813415004698851178199289494566856728984733975425255530544644311269335530577604206821469576971302810610832048836461415264696501701837519050498049369311068624452200819107363376863557902132198042435956897119653974632714472348797496201663276667816482727964501496624899448286351968636743421490019065367307050511978797345685631065088999698489933676370867150730417069879554848425101347069789449171332984422397728746888588242548225139392555196646289717763413894034807406756668563327592837754673518860417657151214341751179684959804124307699103472118384520695002150825020290655220223454360669086510738824588527759955583614483438235767732146073287558847521759191902308471933165458611211576535498081475528015588048372007553214537768801452097452279699181997697991171914921248689949658646660598609061826490467293056513429786959065112770610387221239248625063940082443798860284903850009317762937755248596990928037140910384928220148924942523209014093474593351550016015801215559442760970941384270880268032697101698946958850968765457513545339979978481964775143851382246732887011861637335923068122687971324512845861509365417143096137083358817919464207283373198584355609217442912888847078160456545542309138441504462291598859895165080642710140310124191915910707316078059835801173474987555563716550263186028257568002893363724117564934395808037607949071711582856456078509712364214145623075991791983394338062747569500090304590702653696864604835455910919536104271179966752580595695537113459796654887716378424440130218366787447622001196661943111455809321616276559354149056355881997072207271236801056668682240027596900420129015808163901922623966702656481006677630375687519475073350353702396385703040239111592266094810253600142770321484037965995302091860412200129995578748286848954510547169666169628100596469703073205650947531579584586427655581424187854578556468938782196904150069972887496459893375043359614515572881539804288291424561158935346350156573451774176040305849223802289215507322756600003889724623673330742486903118584741131527209570674424052242378083322560596648588888987797463902885109736094752219650049413491135454615007988148310602443848691148488089560595708880185222219513327043546107587499969164049550935026095026343611681422418046117533552774289975545642513586322214538010492355798137553758867203849939320867301736803845395531866831853178522255641959494317062954523604519713766867166338540522764839454612545276846120254810994754992827739561878762640678196171213578079132888994857301864235265393019210930457126749050851605473813036453749464164586697212266743466744558886908733026477024478672716208097171187918434525743861539937701433742685412985913535219247462418117216157855115769300423172924190815909061923715773912910230118336906494276920622158954724232076931116209083974840889623653525857175410924554690450557240905434871261866625530082095282382062855561553720561399106082220440576269238735126598492052268976739431438584535536728412668841634578177297138695714704917638736099831542208940944001623653698645939531729056330133147358904794492864838648011925330908867852136032762707618211235423806916028670788531326971037430124127766336665829632116663030384752883073318317291179322513121284202803397468995720017192634280965007009516718981283083286153595295143234151464925983835703061888988807388395385906298240859799909155727150090019520922556351806461592985162928312189817687802653448257828097663011796965436678039433762735180264269822050839018079897386520668211447916334224226157940248214137167643433866198616094891708323639431995247941951110568856549951421010799143231202135262768744148175193320454628009147415672228095549884762157638374766142328589330628391409863770016262778340709595322598362150562305713339270304336242048508715534737075031085875455720341714691236997799963371065746363375149573489855154311631994321840444221348290562936765028295706574489069941167440541336653068870245824152179060254579201812920450341927767526426213430626459951645813298642126310129244354322366352141975961996952677112446733637103106770325007980290761563312310947565273680882393160401319479325097984147057752108508274167323985580093886282732188836528617046450464033104811874948576877728885227971708033428216592817851702630267336361878803745398067018118667695176370512272962123418438344630260011894940270084911697046769236603427536334064373285832252562112645438201941576731701017861367829839259047282263507797124636297083701151788644398387331630709441853301147400427269855134538967175715385321871972336941844621057330220602357773350296232503983956567507217096937393024164328440338197617170895298593980614188643169070636696277371688488870632765694483559656072179499370573572633098131900312751713631341706823557219290528172469123322160426314577417377650231768996234377203955314557340171034485830542063784054673585847926476402035075951820934965662851151544363526083994935026573739480518125606548574106197152434636471932906788151454842374443212455289010429433139313955535688467968529528379459479718425002634736302242244633008480175330733286294139147444256128762795967785959162321839914497594990361383440670343843610441456314792871452800973814760255680340099698418559581138835472274536001110144768046607890087772210153393991601406775113475990010450524507049497023460777470385801557247169489277351313403556360008846419915435476604242889112735542243908044956337929598768162131450902339030502175434543815519479279697347432902233429253717317545366298491657582246516277814580704358827889124378982543508283117704528105371218205475205251279974469509369831719328097120710600152395520890058657078182653245634282706606302362073454589151391850221595149185403683776514216979385744551192595150524986056107595451577201185399627435691816215600255071277617686190087415262657754220147071751433680941798472203542729712875118311406394084074197135300060754433180241190418124798058700543288274136662757986587019143576416681424744743869899656205331414244385531527704936653890639676217079432467384109094922647934820614022163124348156012927714911584628279117019944729118651906823815793459543919791667002943891999589195554537582256043534853298600331408820113225887251852770218508684588645706079889870813907286242447616034943716466538974828646176015757234517272923654443602043213891063880438532615954285704433316444929456852902906567336387253109448580596855614448552162967896762999263824210085621744027923737941934407638946424813404222412139555430194377828199512799542066457160285265398694632450078211978824227780785418151016562712982167509551317846057947314543283619890211764921918210474071269159561834032676779616384255839841358367799363206562120654439662309800129515463125462796000407748273553151000269429655133649400209497811574475536220330673452371632611117358322905492580676511417235174277955429130945139533246539860224077235570856011862860339893327821838043392010655425269079098907706652003403361309923432742786376729332957802600104659406048777522284967896789952829455450606146550493031008481131815677829922985844165289773079399460523653050191339859162621181180977925247824545206553191115597017660240455640651917868404385373742381868148483142290484947010769280356073877531312803305997358591909536474386432879209843104836191332458911470090928067481672991806279963242842443254607263446856836717249755105500335525535107552499406803221586251274566749740948080820525283860620311940217639599136109667227191414305525512551988872561904649347339452464498155336020345856732471882932323080708455519306911528330583601591443261534272349417460706720748721369211165206087680379071658736511707809795749924430267467022408320365704129489685732633890914997125223527144658588324565092614593496629570741968324481302759347611147308854539234830682983090953068031981199310453934935985556638155326497443050516182286518312125169904064287721303318410324420118563067148914079140929744769558925648600845990441770535865972239494441267942424994347178773586126434805917800021115318776378456938862291209730515236371832469896032180054672251023734574927323331473496045257059198554213974909740816642998293304725968313467919181607839857330298833925523733525272514622821356258536463793096673766138832172291352272902880750676262282757193242179502217483973759685037839828772300714880413372620441199219452512753075910586135059027198567933716075051501595177334057907819542967072980849065410931623393414692383593377659722158307357960967220575532026169998173938207235242605028216658917296090791889444323543595545207943672435534347927913836918704974150913449285787836319891878726980313218972597400586244617270012708819894743188881783022188769955795524620623423979627486447183473641707682670868747136776570856100880127839817126836237250075747403411155114693349500938967288901448185727353859254879129447385489485280434346983255231293009911131704120734861696299027429884893456953116855652490290439693535318295520723638582929285244040830147817461714125412901277531209065462899619656124803324093507776213075335133707092811130790816881470829918869486319217567177179430292068145481991185437835215873921709095275909666384506319245514872397500601920634285525995828575706739426438731349425911496018308495267382393753506180390549451862673345534968852400915019660381236548020727516723440898883723241305511964245300839331591515141662165324292004005534710228407997931052787648328466405215731031526009364019404431761442261989641333214799179537669549837606391889261587317153985111950750971681805268811584265373598659143364229316625315821247317584545377919929762708861706936035324507823058855841372688254917162476205671258749302656022724966912160498763041942448294353793654904754315969113177405957753093052492249905589946015519290609321004712139452867355468996543812233179117800136560917928001443099803073788947638139362060355580768691188880934623188525991930234488486823919088981098449128583776925746765369801703959525721503253621773694062403376100469625895818019163556020872126202066148710910039910675442847596847546549527646890976796257392170985224397076743258471642677171383723137243001896500105802611937958591718796575336085782133113319827295731193147066909986577217392521022925379979647869824057782391318619589627601144124462139679389977033807672213383886391183224067575352950223155167666828088470932960978956064921960630580159541065156174204586221165808063122042698430638237774925376322104102421115602618609914616296381676044939337260360698742154404942036641796653480455900052042899204768101788427670851625073279362042629453222027943125281122188091878611441958424455415343129600583098213619117315100290077084929285546858470365971522168367979612420721633201462725524236399608012640822124681318234104875317662089438106721399538640405963326481587142239012159843014965647608920230581438872795024460406456900961952001476122742240644499047631524435948200820401573464347182014284882095311822190083502914829581499463591842592043553917600286662278465202361408912350652292270905126645931856284507212093303956904550970518310704579194541419974352609476823195552672365459780957154410197472009090245486079399520466384809010431394710854652470706269700084834970646704229788846542640847097403022572178860294701055623991606783258194697019814781648236755326902436700767361529023577144852052336905958083994152204443556488825921155533943297918533441605884579843951831935361983934962734537888941016698568082584798418401571372620621579260292014731365330480977085087946344513731854763853873566356508814597203616945063812431428123529760858328096184086127041525002317900067489721222379182397090606465153759051965071293388365991254481961524071663090140489784707865185422478112098812702908956164571420159150690010759152241357107794073088272960644404048435632473457940098469460077032383634022510167088039133259152494525617028191898464050939149116932330430854194535111806731733926353205498822760860497798971639173853875426556892003484428638820960443035877256066914180712115717005944239719202586557827601695224916973453511387349853414138247363784421333460993539292318835710261204593109231282991329830780725766405088116242954191879417327304434872752968138384676491589878003284036444280477197688510914998827407179395263290003495434061543559933596890462924066742328559313229025053161137385344962215043431680434627285414092453148387269449160076750330567647351583185258463024394416687088385513613961143822238160901676688037912693872729741393061751912980845791691394394113626633502231913822306201392247271870537289905581573070853482548069104534111808053008019876307140937696313436647840064304410914199234337181879040568336846028472518093839160296849037927939897288344304665967828490674722812026315312648426847163038945680021089248393337757993456939831438262834900652399219687173254147048818748827857342098500623954932964061150142473127280797572639474874480101784843894913576546184314754550907094078309141852159987550530412820791190010640533444197705628166512117076855982801556383983939425573617099727784091648789068328895386827814001766350925925139963056427447583553022432862500723725141567142854974609292868033015164485849772176252339459870232590690165062794167191593824594258887906982275069074921914920779124562886243110745264347590149155884862154583135133095532031648776111527289112025736434535924559755501578930443287909235045530177611457364353734422999106816635755089643711871821251642627708907947670604074736645508866899168071275233352802980564820168302635724788412218601222515485539430534483831460671358901963161236643644676478578140962972901892120805868058464795491117362964034927138483985769138647024674980183685361132958337444152914713027907020306959420439913509508450127318292138150885183983885916741696177031140270721339899212013190112715389064855559692298813946337631538195628710145682198307547859921713961931652009482543260542918841054167174288761067784033290602324855306499312538120809748870522954645984841421201450586129332310478516026953827766806764738598671215536152711726527113146125732182705810567843270075191850449472897654290791721566212995412959185540814699729353228901204292003618250768288592063414649484793673920815977898826821461842314739938555268934486600165095195493980046205444269811464319429769991034265246659778928618164522107342084562100152394192899215351284840636116957155437392700328366969149223778238671920877191089338704097162130385206106310186135123351646409638808234141322356978345870905211197360314602299448520517062434597907851811728466383219093705856252655316600818303887604596016985773640014707831866871826889217427837499636125130960178914119841767520714377404641992807825588168211908952069188813512417642659566766123518058541479527702840979779283777588475297380374005814331192581277118750202769188298766560657673936722361071961118348836920023768509334383849424485307915746472087218096839898351737614508934318228045049866704421185868167616434545389106938543817424331140038367806529363588877456257584196406082432991379558933008417234048792310215706403897157517744071567330635929791401979415160537463106988007259357218537383228949992143754498123303150277741246550268688255460790838743207697410792958664504253202809020320056922731662491033143089885444236470499866388733345336325150639097920289832341718172101769150709728922962028279999732697728425768233165670978080510367574523188197099534382568278765249941285510859908245038973103231826113405739574934689595121971368713396042693438974146968617615289528578101072647085365331630859203479838197201669890223388368190262263241507608953754014035912977322192524311441819455753086163048380810572100626889039699127899091329138263207737879076076637007868910048073635365283966579199246407360964198414276589964013710441674454102029911066843147638294091133069164309839906817457379169778432698831057318953785443462070307678311765760719950460761049391743842059249043338653879205836295308786271585106709489731318176875836465394647569131146041145334410457149152159788050603769265925682369159192010697833743151240808639284678866143594102550761757097768969881377663520512981249031604990148112059256904620242602620225313507697712170714827516961197894854399780664667111449504670728261974827190940622009766471022703276332277104185588537539809890969764217008794511995926231324330730175932454678247860941854275727382018238725129253165414358575771275071296350865786173589293561839963487418140408321321500611901469728228514039226795910899233742046343495419654019852446397145320653638868226450163628180269972686207242426495904210415192390689071503347068536862968472140938811768936109479842007024447188445682717811595856139712904279198305634616886519926868667336657725974988329229694783788254510851612847111147227676967666964637166178559250548154756741241364606555281368287378436157634192558536554339139684307594107318677774792375713503637994362600960641135146967197323758906899441228004328973195634301663311597106709796909856470097985927844441644848422108734195245469200195931480701401065439201615582044762875685532125069427613857851685223019510793834848431569429808453765177199861500561573973086864091963172195858682412635282297973936839901750541346854914318382445860290585851761312365091851594854206722280809018100382360110540562869403352610040351713959221378825406693174803493737828343643329394984526687983196035154109556365371215834462129039119566282715200358856805889653627535834494031064066888607234000331827586415869953676382943853759904223634815288063200920958754814888434811069624337803362558439878523816963081811956406854174009967328531707823921601125086376322313311482565365071590067175497048919394534076990032842556907770639460037349622702649820413265122400455605963297707329170130148792451854372000194718027894213342003597968761302147846145080536304435616118322122735254204256719681125020762644803134773140774304891352305367380351629735401685266290964941541434845544053935716379995649597629684632655755910918370907451648380767746622797601636672618927520041756532749772831729222859664139574609665344543392668360274346159811102931134143823387273235021202781961769711441513000548014889533408252873795042205871872225442132136978583660845316947329788864084323255558891381526156178445828415462868557677907938140618352238173867647554658531923296363699452942093379175942040065175572997450138770509862038406425797431453007792300885949804141831208379523809379436889566848761997543577631371605516545162409037504431027305266587778428170328398275294869441893755652508637667298947771976909381247043601122273116995739933123376599649805481270959874204121571268879605452354742148520194949642425839318260576291880006266643380825094210657869542973946196612848127988878647069218749224762008464809772639677452256733730619700864804435097310230355526797811751319521338032597716112066168656233129218891163021955684436214337279252747974056600700748134585678834548691805700932822335221070342561669940821742593059600967813031146473050354648517507994929838631390278844411532786534954064655546912189294455796140881360303069009877360826825820647030064758519571729498364793439512366724272343634815964557720847913878291826206306782666403471287429098170442494730904568766391277267864068537344156157097862299060190002939011876697803502093150971733553754947125458751792346399494860909613626286657933358605038687129609037139308922184741961902685045790449526392945567501261666822787122935538667707122880626849957834633480371456422175881245955564579461635441406876229942452592201118543370217755219026519526083456095933366794871109992894043939236839141083105953139438851452307497447106776117800317542203274355994622415031089771256916702581664803919149617954817339024673733013463277544527238299787460768811273502070742534758996077464750713584558313502352699078842381272601595011770111395650424210463926126097929829927028328806615646037447485310650375748085629524474522313380145559055516290725193661205451121007189874320391424765341723586434550253762784025716943403842765817167188064910022993636775562289929566408188507036457128944708790349403608540925512738350355761164566372038897115258094067656934853613815032587177086179291075527575840274177571696380782802761918110410145372370526681823142780829840048965913664537768156279978299454911981666028486417693786925301635881397703167722436070609428775438021708036072195756104249095463701143994486617797929926427330336767899033825632357964412266603853361580618423339867280854126769955207587115012824369082460345163066771484426510755354633626769890002388809710372847031580404266517490723065195545163938907274119231260838058469633124314193856420844808529719321202860402297798631406160699524261341734416235507439303270724107379516453151772820397650468658256382554810776721597009835322264051613810204553083303817334620551752348878969431074513654981911314654867048952672516498819680433724264966291094857127367511166554392408301697573497275079543289545162964863335491231893432110795854511482866646796975878457796617117405530461232275186076902610225326540757877985623769949587727425488053974038110601734412473460720180518675996028544553813177235529417476349424680562627549408234428210903673243677919594295186596855306216462920417737066878574949436483809867971805020621003935889887223969470058816943088646650589134382533567236652084739594158231958258835447483374652507058590454468446831682048809126665485634981692612738665786031152111656154729059659351897690287660992539641154022297552962394199674464656884234468189122886637760541171612874723480641457857109773775858031728613163805205597392781638203480358793521761074384880635267646911011507038682639184983385522470742386859341251302775112952874128779653200031735883525063865032237650921379728993716651562952172802506175664844458610008347662722538169359991524277658982412230642266056897987087086795021683867149914224895477802395323414618686976485428503554593928365725313250919084849043624882743847444501470930596058021073152058061099553272532956099054886170578109117602630096631847043409520853489726694588918415495913667564889186780415753569424747360633818816663998136856932458613153466687360282555315263609463962860679896847444769545959754110590887767173155050864802691193720388418920077154989166999518149541439218167793669413559284285606655351142414458901320475158834850303810294260427215166725590171398047454877031130370530992329573607348113043219693716811841216255232932086871034599923972655655144081189969619555233865825481281566068810254979486697691563200841832463317197857718321999622215092958752436451101718603561994725768589993632116480682121800710892911781367763236522089337788835483904621139753206944924593384616763786294046170609713940934693829791096251978583001108822811442740722098488166015170991974385314911011546703400040362898930108669792215207434700657956838113477973444067971352607064220177893825443486031792877120402701397209492499339500360915728290874924929079713170703523473473216432966224389468146392837251965171729691540507751399803932565426330997025039135366109541111047031893033026899975724510733474320483524164919342156841630068737088289020479762694174002708798551477049797414461301541264268733153010598758726128219496132538330864284649465191649917615586785463842727765442521734639433306890978079257160967053150421468353938259750585361821643896177638531934165397758883907045695056970567351817225807671424015221610351051259975917469975607917427489578545429600519054712875068838254351366722783401769663300698831534957112195680823221583347259291167518986096325902210337502847519129748821548689762564558813357659650823427569866421687817166867964875452555210454302009680139147913284011633517656630482270088768224069940804011634688737644565582718721121784996936876835886885818993912682236409848116107602029344436995591380178921940449279393650391542372989289467823103331634537647102818897799145522966779518931415395000522629451400540946287445897434228423886925765616790337995580488485781298622831793680201979671953368275960910249220720919818374466659472485609049624723326715907164343899950736238462649240267646678277935561818283620371630540348152202773417755780076879182559367768386214989060506572060356432192044758109477506135894254904078517616019776021017221096551624529210420150259372535596170476188198135085125241671759503027683628819487244337167874609165433406427361281443882701893080440755514756128878248693210036409102282606851936882121011020661305706396171926960951540507555468673639193810199155189940481632733901359259507421129302410177189377558948232206630850274308853188399938161588731818809506083100371411775108021215865074803541960682233159270333791141853606822128393236174809245984993189739620051036044951786294930408300310143953716445484550744367722407935023404934885101612197102358376815707794620897276069896112279261659742371634501252209964579490553542926583896349390352974364861048259086817290313928729654570308269451413943541514062134400382475412070515731121175860936688186495731817934874354701629282697031357438995472709836434427914217830118152778377036423070716876937779799108020452567356090468809113632978579514685456634617592417601573040166650986747368111886205774190981049736560422053927614537975702239151034711400469371301871121178827488225070848245422157857634365874656125689199342837062739255468118087160224180263384443926745360021204225402862353865630894318165156072982007395136405298496348305257842515266730632279778343778717579102970744837723375582151035929098521361551548027748838796570427071533453234944398148382890392275542849935911183821114785672869284009615960980560363082647184101714281338711322362815323887184595400060813119585646056741691260869946122815890808191117179018436450813246948523794211744749930901942925355485784806229589181999392920764859633539319133121089187063680340302354057076019999565235903922813366920025475833633875230903509250860040675331558233969789337204027448936071135363216828627734121480715945983595908833482330021324022633224321179985818880148072765462264312851660144059275817642826401814072505939012139958771793224075660419032535823319340344066638663219927665080252011910793222619222442329003411745613911036281104332759919616409196094266851443006554575162990970467604652307817606463194665469765993967354167772533265241297960653380611915974593256320495404364542699406788195735859507901835117755388064470753319723893500514412989837394388781391172091837045211185165208334008275266724838699083297695897783892675709381003904898759356502882156814834435975650773270509790308429381122329903694627854230678932627048205455151041022811788092281083485981777351031880951566887224262066263477062422959380518990169369031549729471831824808573055825478887165327125694742612856374564689700165362832150660955396610375260231424777770141811181310600651645646915465187551576906702739299774825338428599698326023484073548391238161123809782730681236689181380859263848136587352371909812998804972881837982995072720510101414341836784988774264640072962788932588713596690311296460865837697651451880953926253485299804262834788764310184720000050999484894976914428095431468440169797236681746556996628964545359759639883947728509797346718165919309117272023131760089843914743728921770958952242489025908869781474386063703074622573894123173855261284635864136196417657782798864335812252471771945373920945420394591262495260251785094952867440875805486704939057472985041816473547617691864037697859201694638997158011441078705443651158159416918929605684357205595178451931959607242312229621319310204810427427674424286536801642851440942958418048182061254387752524275693116646346817623191917810207229328979876367704437832265123453594523157257307139178009075664385858900368774612529484048883656758099237808851087068841986001534671069118665263232946352922901373619276169723495795432735899099895980366008244837306947057732853176185730710498059817632919840004701615332220957513422353095428585241878305692761441063036880949050787974162373644185929528106240960169143736497292521988672021789773829590750094018742122937824048956618235694162900952564910532355187919237826058883224456623396709768406747337649574890471741890697737017307160585957440909257338197472379580830530637426646800845403103380172264017228583461475348335975504593834370175875327851650751509704926348706628024062104426607530201047052521307322618422349157288029435131109513924815535169556688484088255940707688579020552915284564832131055516529666099772165115733116775550481303799606436859401936857264850042164684614095550302618739980855568467384766843372822283915992292467713282955538947030267003995187254716143396136355453718409819051321084233897796609231966707717736332605949690065425393514258045935653926982064062371432793040132448117702455977398229489993809519403660261504809156912914806448844902345234255533162895604342205148783258797616602971076005823820991852626011982686924370352907973095823458165199459742506740922399710056421878185441228828535124274506267704678095203546432354276132260688569566349287919354864061626323414350764794445421089574061370734945098377002036234766370083467705166274327380726594234790527041589269300928400391561402261221498435439949065997594933018413263093679845327537918722096019663982366274180679599227552279556472264514227788063553173261998187047511080289372405625181400899258183504972213668309537464616620961078870806988565467705935182754472904744854439834888350659030824605327309127959482434790662371748586601692973639890172436356508841348964587974221865343115247801792541738694467507467417293804392037167248511491952795224245351045640057535513472354150327153913600695898031863680316348700631719539171463437844955754215940990170534851842432980591564639877368585966777586350022647212279365172195486422973062410869299807576250183879372410292288987693478265928541525746808881062169224309571180003332889730242462920703943387801160399379024636164241905459582102063045072781266409451393187997270896161396340973240022392413948198854485307054780934413478260923102534648953184928021184904192060104168989346212312516182729597984681325571400890730890812069743954650613602182525244583127164888163857958795998196954666226641764838639558135623747710591651374824077200029671408689021842125953953422726151581308894787591566717144902490491345258149729140068237087263545462371332854531099177789336222028923983163392963731047501089739614203402549098052682048262889401104158224876038115563841175097697897854063182324076347627496130957540137940738253645939811570368331900469081275094061646470759975262666770234775626548943488951779937739125613919700103156617863909020423785396222984495473708583332480537779859696918483529994253429777792160051776277759599413297295388505892487390757706499271467431061272529782725295168045833068412057989529195748999301769630178275906822008140718730144624796131940535883062270844638090979296414836629107970889999282596626109722819031729429725033110434229942514540899307342129642277730750536116944596302909675143453374189838178977539767997643665742234848511046323037807484261019535215482498177538673361759843368469597895046204091052887637804163561535152527922132594205029079640113595884615982800244135502427455817999243185335849567128070162792168139297666545191707242110026701926946031992470413868144407449839896855420193949171593434364210724774391915793351452362820695569127500317890863762288553487708174111232810937913799131539248031340990617470137608030430086906164055121374677130069391962317160081320721020292957171121163985497258255557699724925083173487945182546644767539183495014893423117223066401937634548596159688048564154470009164727768068122328091330314805289276924888194503081060483798707968326880922482911205974938377458902251154391085068330704408345343052762157689871603503704154802451890717921782988693474040742290908157762788959735770104198238267221309098275864772392636596397585148029529383099203623178402453853163735910928201370135910979344066544791787080323479606211268052123131663382869689327035925747038030651321531795073957336607476978455162802453984334625233612030923562994457784574206118097536224027613846079899113728904402631138353237300601880563590899200969543076931964765874098985452226953743615916532689307468413618488867544857351277358026839580502072381665590395412297453767717760425064200303013150720986667281252732397235989287665227611984340219897896882490897039966701955687551763487347045589607716253908001547527006284425520785794332101309645081568547354990547774734080001434623136617931206461920247884700668328193917338799498165311442297992409691315917704185796857064863187281828118094371345754650840007457027148129136939254960868280540412663929916352065767364382780280256704825013128480328647884884522463667825011187887372290319610150752159564015173027897956115302125833747161349569477132079364551176251606307901101166040460460587016072477537506664380234142260649621346964841578957115980861031717114957577085074446237861327896517091047274527269909384000261850522091081280237714064107589209431187775321564840900481434700621808728174100979129261353422248063520540281850365800220297037098231442635571951060737540932464304423949298633308354122105922562504503255672903240845513075954178197051826624105021652016260165482329635042317951601059259375721179544752878939479245748262180035004508123846389958348099823132005297946420768636308740660463497229940379400528550040443385975734626559581920137932364336515172218473415241479455129816183113180583536491578729464989973591409944435380847936508069241532170583101092915729284924401162075019328137868721622651668777218837342800364016336471550631970937756793331100910007877206526853090314195095112858051924411709041436761805177022902760788256729683824198254606321659508942835725931256513740032541613209931869096711523631448219224294684839777661386263815413591553454348768389778131043113652411994747557343033468295466001410697757918054773331348438270902196824019586734701854157475236000104115115400799820004755218238345825530126414436720902694234411921001678687799480372951391523762928365478324598889015358569124313160312942120174539749832420537451847711630498296632756500412120942159248159321429583259618090118097962561501354865316084888353351274719075464055282385893466261899910510608358201460793807960227268530320619298026229352634948014031877834860704117968127866267738213232431365480593078932896004800236369240588456799931108239726317959988506153934871439323084303385750431283850702260121905329037427577709657223270123929769550939062467130401071318806559402373601704106821560890175622697346541109929168904204537307488730530723448113370262369528142251201148369621323159096479875555622287276700478286824972764411013067535347301829005807145274733081512580391977896404458541666588419032839651753054294376971739482038901403832967932098343320922785498138084550662083756774011680934033958016109497353106569565942299039435130653226059482174110143841248370020232272842602927111813540991850014574716601016584895840835076911797293030350303679016921205114829481150856630030161217915221042045351121754452176795562363859845982115156607819790722897249834395042986878388496248089779696989400250276804236734425607372625431196850127484168119121054853302722999515942951255564642898001541708535647177388571835265046975552394422131741090813249787825395071589427482276723781692903362093924540844796888296294338703538597058807921674398070754382317176070100078644480506988833359558240735994525017609096407964623003850853929393339212572503573626869322770325855327769409016361521333403978862730231440140418269782549379412707546015215130354758234086792422686082179719629884157432823978592786148828237974526773714307736103497729280533290991115768246162270203892745255483391974927143554129708714700615638957772001990430226213027407076856863446528167405822644482103387868636300089136785196513932367751053809218066979098954215978921900945031021038724379697346556444575168144143274822678756277777249150063093784369581073249361140986943197087244198114574590249959306519404182280548606615442997733835149215951727040046017018370891720550551494791247122821860491820499031092081352369651048812687932258684517695998750451849718860766559563205426681668286346887309379795442255602642182532853355536167454723750870608898748845963476113092179992655326810677545969704212526415999313481230549791969084270721770603413577906332879186826678037318819297981151883173359588309577680770195533818443683870965242858450263686354717407289306373227329880585192010421793828547604468026581287491746589119177610665062992034758725066154270847357338583286621339626817758775317185354388768711333985223975610328648921491482160204141379681479434803079492177858855541436953603853401859659533577363622918416479042992944991792043012016844170879205784472688594967306528736374318038216482387376153122708746625691560591557954572124729764464527184437394227774060437904606931137455068410332594662541269863870820550554203181136570009934745517053540881956533606771550894076836581635387982909450432931643152698069684416939032045166960683010892546010010325882459435760311892693561931822175815899105520904821633593072052730907450346145331890999546422972163943658169940727426300729210601341566738864640101842518756500051932382565729677085102017590173761473171975944582659723022464607330983718142284268500499628341670811895347461726012196908371298128340154574892222556596635261703320285648577853627644009755726784183845351605621518623439216780240999195864353265322824238571999038170489256396105013443874165363176638367348186989009273726273704373518653050927176044024263988144075188177343038589172619585406426842413491227584152781703392323435516503433355419685561403173899180647389552381692782468414459812651061998999564006212529194077297893752889403477311698197689532940780038393320706730769586131855293816647002994288764000348618266269209967699613218015387501482814079763390937759454986697719025527555636595528962558670758006399793698347555823046338482033388704040832658077820556143904743031425942533455999768469121663414516457855351521305911989326262489373600317909831527453726561348040328391676718448871535386964732068765427002091904243045789975674288305123378902126072414258081856386157681668868549127280589333597554301528364045405496871134959932146320446668839533684270186387573628534381487609384154170451572937250563551702984054403403919700884759693944227831161330956943616577029101058099541250410728733849934234264841584103200434367931026476267828112760918910584141849795331874441170802154298379613349960293350700103501479229583866944845015063839109081448971784914258181992848243755296223538078494183216421685681683116334692540271238452033580717330616155622437554451431110554845524781938686551946068759488637087960128734493361750216501531169326303236951703658292894695298101569670900774718219922970281319091436415465602033452357041751056391659996081322990790841186409783759103585081207865028209479598219782598358444312571410587655868448459740950844289177249761958995018222292007274308753529741617292843711735577433189212080454756182337901607291693498413291928100284790144789567330749505621722295571850981315876409711094391905779341928560754730706310161829423790260130938546744912583961809413828971342034634754696722652307886505736046097790922291543653242486256038019843098774347985657414180279641692567833868744126092635942217608464618413507202786296917233752758567530788009885476692864616185252614577268297290493861323463960528116625853265474788355144571887488998366788420679509291673798245853010248047894287030675025641339533710224872041581178848594142054310932538386829035187309061706128358709885039311041705948563416627851542105137441256083835243661389753822311202694988371791012884524184288350578858722300382209805529982419091048149466839626611902619242388768974610437185633324466043025119752111905307671756521620606032921529155805108191072941253110763671440107240679369864439960274667999145429854783431422288974432289393239014862112736310724477332153972799594624244285470737920906065735688073606779160721130016267267175506475926001556000382674602004400562987908168482422829116532033049229870764770815640702892925290447978727462655852871732256401440841175476938748149549113572026049086994903648550432954361984181653516463362610805629326371386667376928693841677823701887396887182054151388755105049413420411575468777252302414580953354470387769836635044107528007254691387871340365942048454047488223767798708125641684958419296591341794522692551054099762406243502235644253637712721836040378724340690888071165747255652104715923797022194183497346372085027091057445832706613928245333864603566111688858484752916613467484485230321013493377555676460099793479989526880171429260357237826951196242273472651968645339317489668628778223900496957609354756947478004226454520434212057171102128339639331097773642920233460818212682406665552313118638807948587091182512263533751292100509932958112188770285233357985012277316512510810141566209810815899731403788711549733813746154285996254914313126491599665515466040421630304165288113273703696280669720203631982544841008469626989561233096906696944857016914477992914989797655709650523024927572890124393193416032044510912612848699277781780265867389843677704182962288966475854987430580754870026471526328035124731856076016728952965979621799446693402600897418348419411773071551337279738929435731187978700609619504246018970971612695239297821538047478058414224226294522503444854717626928611047330885448306285300607637829476229415246535280112958867778158915716290971576019041852110326197472157867321881208657248665868107577321413932358001030519177255836797936471699517575065545740111348471111779226532594521564721191956151577614241802494934054819469506877931804892022214438614878703060660655792696433033321331112376575087603676424609626540811951069171732924371421432315151810738667079177817816312934510346410262496036649681408609639559313945603944032525280480768834423621374068619861280673445676546457395970001298685979763433343419838533391542315451028728839250458702871732578488510985968170115595798042818360948952229312345578428425345601403663591600882529822238652855198432109539145674480536797357017074760341424674596660610008818920427781440119506679780424618649813750950914718133343913980788579416978998159495067759516811266062462609868964408489856467552417450535635148933559031511616093688310997817397268709485967717837460953514048408229283948237165716107449200741200302524916755970912898522827704529953199004672419739989543901042831821758170564772512859356996501347734052519027199043595487962519195453891351365172043270356851781161604069148406039223525593696336788678996654855129084140800613153181154915944466744248235402009030773154746869282814329661369521736823439923197285098355447907008847825156986254597892847624568296518914182842158523818197161458737253645425153012443377539133370452837926020540209814704408277694785839224546093069581964261620269280397773320769066802821499851751282445690245930495396679582765118378734143096949411541274312257902519796681589069593811621425731509488464870355075906638056701355350102468738858449784687680413273175586372943825586260791607042224981528368397367535957079361461355583124515324080610746372281716111187202832480439625921308216010252151028705629667514070966868222142936165174745729880338689467209186302680977861865922337037047542444068383390554580830505233490252250687253684463116253813988838342828424868631203737322683849477799590941597111788996507680114704784442201305971654455158171215045740826104876078897690657234345756092169529769205907688191794390411295423405960144782254089729923468671445125181014073729222158879253257887175558131379415474459661602974782444861620708663047602443084476917956247127704183301984700977970928309336881209375127776771061725563622935034142272242495509636001325873331818691387730052760825396804999300120821776926563013160319599448898244126757083670182292259629229829846630375164235400158884146106822049430731932027866436849623165940035595924177328948308606332407860085550071051634058232213814086510809437092571605237507425027058782053819941994378336665161415532541896421333504443162660485660372398373533947394487090422647883245752095539854967382692434037283288571438528078595083977132788995039307103621794019972176195156274647971499089676491394288782386232452027314968656010801663777115173028706587695187177172599550254520454010246063354947472367320902037107460202863748199768391328480430431752119060744020900359525671636075181131138094678185885263061791430272955576047445993392512686816592034791692811159428916253872757682903835246406818952091736188859867874375503568373401726082992425795471756773350390303410295619724812723820627475972267298685202744585195055697969433997283167779952178681515329531443373435972251617643266302040915531022991897089447394435124439768314655863969003926825024208774941560767554713053140472941617257437057734051597270296494629154390147454172418446262799360169612027351380681344243454348883815216520669342970389039752325123845449518361053970003398654763393176830647898431113262602325762182269657102540215274931303072307366733102197098001358892653308195020732458418878005930682212338107697973880515561847701593830356350368290548903991759809197374314452186898165506961895822118051573982478221815887291029755313139297514492993267389240236257422895011686436028947398664136614675031199220628353937362119194638625808342856807906835991156457177865447462124059590692653975114526535532177182975226882448624077979294913824833615289114626623894204537844558472896269717050730488888324478370031101623189668278651315757808469428822020547595708996369691441763541289917336710805590437236790665316687865278511212385575020431006460454974881613384692173448003025616721418655860680600719319122614156608425145410419131806244659142316233863039876127445889835318372652767696539907603769911251653282232624574589663807624350028072917565184623611571612713343161020027697865968514741119206437476555546278311747256838280587708523346033609301326193804415722603985283458298617929065543944701344491568129362506156108509703757080705226018870324992409707199888028435349669516354075662601966807301714169309875915400078123068550079204423604233914778439512902245229773070589630418487148033906717965727000991937741922694530604230920182952569951748440973461029590390544952702327153929858393335722944588814892950254076080815452616432803562633122340779604412754120992741463495657020390259791767930017489715231257978338008332122358399922299409051726742523983760423277542093873972271555276356749193383659564778032524098162869504557774974991521668628137054497527085578451285848547436695891236585230963723977320752085861629843210569602090996378843478698176705737998552701849536280547951217061127995419027969513128987531097592912472610433264037979974792333372184711266680717797252265586049310402062102623799599383979850967788441851640205450178387336650003448075204497310294802076802836860583488775679568063575574317402305470344378594745030314406970879516227050286643044030794338472167130548569742172176299683420174480980680483302306709444333683489758773033361615924653123195696099348116503878942717166547221619025774825731178594613526655537157921329367494635422806964009091531121267521265014369765050756199461282034608805432392069452954070287654787213783810639840336651609631945517699378846352340710962666921585366284011953524581662324132827281981604269148111190575100807702778709289029558856001632901779468305874898873330462108879169404191013591210532501799793372917956017888935066623136483425858114872448170449128599023494862016017525563118986493508859955506826709892758841769595337589633040598906237231286737022511819847506931763541635808614887122296788406639406679908302096327496207130556924752009149298481651626155846983732648298311603425556167617105402862681920309735708459190832789363569667168412362735482288998144224621001675641999640246980987519681275680153733485777250757814376813779416979463734222763232407499339508740218773334105109212661446375736693041979653943404801028456310355277602729234822062134700885670397185897627995064500558907704665097171698057317242877785323591068208671555166445000123629270973793303844823136795003835832702654770631967883889899871327954885905700404976615039834759467132915021140749150903326273999161876861968834141953407750317484451319260624241597026537299017540805193745111926457588162571426134357217848538338270644145662274355594622005944026088373712185367949026954512867538284515322108352010314049812790339979368167671711870901219406663709245815477031881534228333895286114488639401137141265413157957986515464585339584367090717781750558121659128140615000918499764824488242494439624008777188021778432686700917691854326343189968031104997134331899294999018211849499328535686373329586965307373731301438492733183980932916599651652699515329519868684277834489518465286124534410242800262326863289218773059600607963833796765794600944625649089766227506466871282790293591357862266085617257679806472176617426693683562963319529946585963311628472566340847978803729459222639563859231459437465560152909094833120641001139977462677333662042783922642375940234991815802176426855386401332863150446092568608516818488987745517781408501532273340251976774139504809627475236082279130048058750863910844389115878060479207708210067169850470909679850838371225713889123286595434048783304937151827821450025009353679704593402333269046276810191543965354451731478312803198893439329664424922410800167927942266188591974348629672021614374629541633564472671990144290983129211492226303593738582684369025224041060874620170867401377109820547689222652211168200723423498286744346833675053478683236704269023392093176557842707953021244325373909966226076484451295613148700074699436914698279728279792581936923023569589022938659973374243546017042744256781222447535731065952424345779758388771373890177936797731520340975509022600728336728921216969369158438340620259435601106509071893076463011719497596542544444882641412580639045597618190829686470132894909209556051610264379365307226116749817229846193720763695840039801675973440429441294750418421448956217270726420745624020537834713030638958831337371747993801032562312970417423827947729646634252501312670759453268670311666391203603389599353282708507513212482784465140555039110931115161372971958143772059758008147544842425464606222283584603516831381490444013245058508447956173933477033685955257273332668688550779141219025661795263063527032350855575026027799761096700320769312004068574034238197195429552956518620689274752485744763527342087250971885094573754329886918385921739894362437228854797379002899765346106462752408340444177459699123680250689044680633419939707649609694937505290418185648777018162011982298717043181737052844051689243168469397121850522270354007303352211791778744772062939767434701890284742916631405325352805269413840396153008548992837488567550394960370331244563359423071169512882025635898953247721910743819839126161765027409410330565320630167852045759352038762387567657565036673462132508115693277413730128179073120298585011040474580747597768251602975968151918533946536966567029391856477385511360754072135509393221118704095929982311843728415697019632715525205200034503359162020138581990991523601356300586821485050009508949202860051207196837432586476478069499962044919479578562805102257803916112203773620926166678513522413632780956191180093131799214299687261064709363982014821629213698634309353297680393258392467602173132594947058063215410277919478265883939965386260782520128531495516293660741661678178154374092571944850207730385213431447261439366701992563540085307471621799531572462671411105950820995164651116883303069870247683320440911788516930566340941123904208792302407922917708325783635002391812422769601413603079234563678570594323252545122754267370145857647834876782591899315457003958285577531588552334151287969219714003432362821774622272479296735741904759687791041937713385613920330889538376605178416472060822151844824665073707427776375056988158196602478556035040715329602004597977564846930412859564410117646508365940138075376118816840579293550858291948278550389635160301404086301781045478828542364403591828507436949047704233146764392055565373268147622126125309444277900003184826111629306127393130626735820490228067450151441576288643682023927946249202308031482292859939988011750710393308092232879158562252303939691282892440479749791522671105478975371049080908336628323170091165532439861231294285183265375610870629127420317119495224571912250012566041949676218370500961835836651345638569120389452345649746529284189289899796985971064882935741274867000563897117379745170730432296733256624038159421937499936146593866900370480798844804818754183441804358363958192823115961932250259150300314132437894563003931823676583495907252449505027966749892360344629965325587051105419671067049917741713696350711288309043201561907133955103734633165632219863177148023233988965795121384557985046257477975543817156054260617079000538302585405849049498090095389167703355184307200530354344503714818520685596597783389543478770227492295803373185035296303261897190929693367024338906155953384476035287301576968450244159365913810527078964383319992327400063848223012618047010015831202306936150612973006684213533889664816337953187322147649119188950176178421713490575574443169963893318753405658462015716416365521550088291088967431725820166975068126620532417737106651487645107501729577125833119345532540602079874200140964705922052486771586494224735464166552659880925130353685646333489016923788326759246726085912611994624635992037894403056450501432816452735862776006544837568581734540437607699506064872347576082092125657476256379426165785886080688871233208942025985242571575179491411848105748798079504853495399887049966544247073756769601354994799356560794498519007646340365080637896605250358785496261364753679174489494178460431435506016047112562629778240710029425998619403068485230096139522279807181489200632714673296487484839725613631216451949829591276681173043557253168084624486658855443827152547269001534494811566015396582682491300223896867347714442412782843676070748596045760082740809498390382782391337106078729285806389655259682785673022787825972330994801803713881985244380181801639021923402347936592682691596562884703738127100445257928557182075774124096270512095759730597934951140967329569938422177358191816367602777351106822638312364724516519495903442516521107614548928952653268473081749261619695006882964528309441446292753962603796552808249956450084475196757796416273424104557580217349300648338492333505838467825324669932392672752792648077412467843176725685917184983055359047757274575133885767165513193977305067332630134652241434798711305997887613682779885657354398484094561833722583820729004354131087018855912575314100536062821133964164317415434096086722385089712450868065602749387473597586620148572561614154574622806670626303587626438365175332666880336783937209708480072938472996536924334118797969943909394155331042001429894632052836758520331964212340119388584210338757467361897238713732065957442563587964750709775147790566740943641342327244765159479962690664405782886427499281399587549866879043444692409064008050851501929827454046386223131874612772253604689427122106248540636246173544428045469372619444639095084880240854307331265654957974727140944674640968243789866814924812872861457292386570244023808020598183615860424685554154619284620349832136343066819166695798844826169668771201897247399090039963261659962038191360232304313011575427673292752452332430305333653311125617878581451547305870802281964088141052753299471882262468622425364352183778314024141543700562675453612820565443624325328140949707031332793968487014593147146311486325420193538659932786115633562539967672960857568917289262027315112887864473887227702818946126211550549025684693314461743833781938727465989149269684638711019127374838496823827569866265867920699851221689170137785294413295173196649552643600229140620238565036725037445227094055232819268582456766010872764824997044452482424576212963314367779068029908285282138203010966778853234776130169625788055100670143352247062012345481586880579560890267732602250063228801890548267005517605673252373030063898188698577030829156400248516134302000266137252838859302774642205447691492233297483208503570023453452885389479100934895562884614555733732690566259667918346301734918523203278765129312174133695534267352314465725397739106492846252371994803102540893305622453876689249834505527101718982788368448848668250193882166768490829854394181310801629609025425753260849588035449167864646598686108015863521530185426037381532700166933028653897439603405168211424904042011209539679423015017276914462226994066525756896088110764438178319916954546432540059991178031211398091840993343110699254734481424260341377378494475393311164015799319574145550050100232273267203782832278147626456392680645461362859564162718781812520756913167976954379966759926801424838868726378992317434284608851479490971152816152993769020453284174861761133240159071982182610022110417300623875783731213471964004604581745861717023669968145554689610734239569316569117020835498690754951057033806764199854983434765846459820782609406504200208990333332042034087475899737230410586375773047976669430921416170007351881935187435024311164034173887846790035412586179467184516776256204652967640434405385950614573823956462381863825849095360725136368657938336856141210285229266675268217192914223257641446303372665152357376466903776597514084920106950683338521717044613545537866617053664797092069312601708038140378753850125080773027472252566154288825239247841973614952835915350161565220380538690134161291396191910658416177540518232900860836918645300324990788870670836507957713016539977830646062049672818330944924319607421774548767082347663440277352916780910638196164528124580474598441550064752218552206984390071338986881245437476250451369819004527326536695473868834853511763135086927626222858375789960928503715933888738088224107083490613751297585527589419792032130726647926041877644218267877864900175369737754638570404028630124440561896962248957597362303765803205648496452540098828688042708835632952293559699016502192674265002992794384131058161068174635746796364968710060183900602956443080714156287439414466255617198149520025171797808652691967990972147763473413917122427784864895288106073672068120859355213424143348395987228903591735609891442719193287877638978369313336111149132187397899765099509717327134964714850831648902167257801888325482614746093670448853427411931417047507964691008030884264917507437334639089667270606218326827316629004105123442428939189462273962464683500096830573137612151466839651005786297428995484632622497807929184906926224076677644860513079483555883877990934895990436533340034129299950081852756400123238456112907022525559497987103725512695975093273795078454307148977927917549195483147513915045844343135386122412980024048279540185969890375943284140632487516454141242625701668161274409153958930153821560853943747357161044582703237994731376102648016236607373786951021232240272627521425435616914115632385860393963743160048971097913392679449505323917567303560291802246892640264881724460756496055496447713059851591774647288621595875089336759887968373601756777144598836507859915524603988489314727140814261535675917622555237164083155706388936253368385697201452114891650101676703591037504755552710255705209384608313691916220464389629088687845968482405865622768459162316814747417143098479784209622641325855301303559189509873443742090179117090358475688269196170038283410147535285895866861597614863691864970176035427676568206859677108246659178648586135537368736761971281702742464444155716457144475242741558454550371113976664988870663340449024207150909084494860141563966320278199158131400636825183941967763061525335764065481795468208294847937047558868886032603278762869166028844173329937392538832778461806649464973736121720321015472152938953969600092137319691205909822110095686519165991574386547082249717951389966739564134042117679095323121301332581661291228665727880740253087735384091414159027283363316160285730640547834415513334574654842031016235159992233501070780193088195460855821644073305906702996405433020433374821442417397322162242179034291206814988244479214396157823139572586634772849084765561781110965432378358037062335173508450687216401047447729690790927975799714278750009391147881492701633121518651698981645381261694213745805316610211778591902229026148364554072198538802110884937887222315391458693622192339690229241121408769837354996712860169096758420872306709093724855996316084637407325331486217375300263795463144663068735240695625005208912633138176974597422445315859865819546703793429698018087576850160221811808437955317773190125364035503933305055729361443473503906232826074520573106223461798660325706560888367723693914946098250668653444660525090051756673039032777301849123744760707490342070545452011582754563968271209680849097394159289167125863423791091167713432777252901849768569003658961593286592832717779036948894170527817253176254198339083298176997125822620926000970914303511472017301145121822820397692615442586590822309466791915462188570505308858993714343606098659626473597603852031246389614019755405935731915185469425175074144404144571343277599730251791773316383831977102698897457718058759885116422852796610417101198275161328519528260540531341554756478097593399375832919170587358573752725919914533403685463369112272529703636941909812609132528300528354095226228219512821990185168106003287779136033867181055093608394304552295611941855639405367998334908996701311100346440978390247179674401349300901044586488679871519346535367021693289758008049512247430267170949192857961130700008831308981154122995286296668729384459448191404523775253892869517642649284268764569282517020142554217093835516179339250637195476507391763680479026650805309708735051881929449952728620944865900473236268932056533006222347631314368396933856262250881785056432478227157151471850393370400853228025434914877152598055231355486330228861247410977480828437280186754367515577539412142282447445861653461662154787907010285822329493648598008877141096807388437690695626457162274655060033242902675399483423426634117723306025509983734640766092477394906790236958911839647683348315235511749621196519526215563629707851790072370943813356454148248673544794638369130166580061916449422497656471287351397686787569281219118528145549266100770768198221812229283362625355519211728814142899282630146916674297917718662565727962370009507304098166485069745704089886880397330832609386794100206899916351494591797744426107820374797133869536436728812813531994892622853678047357543220487048013663119215525706980963038349412535849886920382990313742755967672007163711482213104750523541837279630847630771078851064167716322075814706167258030578875732595243937840152708423514431767485179398522772489799781697555982382594350480472264854404540213914965681848071847841134395617990528512307215260863985227996741806100870287220901899293415878846708013852255246576770871428797549955340621436064662340170411009171504293980119935475220085141018664469780734048464538285657749337592268987673710184227579111060189404153130577171583159941201266920750427815477320248924845686746711722047740850789745720878203258722438679453007000433931132108084286971111701262756097347699327835390578529830435418464010628635256784157340520975002743684065003764770265018611420964242591433618161493280053308754537985434794666492154313206152421259110230852584643642624726958585490091123707256939745288866791189679433309162034382048742928766700968176430094828369805654254350439314538630279390487012811148355366159012577043683592290840637652451810773895740998196873249599647474082418567836496590768919523612823361054093222657139854999730500686448828089642100644926644039112073949033447650397183755263752723940846798135817325731401225571608252309685249106918652377175981586773659972705012699597738016032970231365629589123946857532810619750606327679867786492491260315476752998854031372537920587942394822140663973426281733807707954701290933819542855824382327381221130233611255507432137757823829115654841385411125237621879154387023987578594608904616397358364303797227059137794938292225936265139587541719038095754628950979332019270681549761804042010685080614472062680112156696066423840790879190736810653291994565599641164204020932340913640686695430820985508155037610536668988275256039590817046453771217217510747430734964734073052702032749795420263635104610484543390534608387160945094715868358927207080546838247196189611223460197533709241582829994582247044143000467942415071415205954711225350961200429145624676029379477569602686411767376145062366449384827891898935652095611019597182332824429332401462932704400603573558719467554643144284912230420392539728029295517130676567303784885901074237313402011438173526094256444556718006858022427455568550009205595196844096769236475743619938701657250944990615656117778610033563654488092911620544524014153808684720756660904564429051162709140322717804688622931614026321498398989331735510342091948468332602305013713529096268862269985006907619923696614905638856453505519748364741740326066723119203837980188433445152674072581286691004695983780284817090726477599768291239263775045829525189891445774647297851746845304669387187652110404679577575510484506033299530931182308065409940609013622013938292150636567177219540910809708130558771122448603162730363942411119771537599915018627965568080964361270784203079778765806922806110355409862666869623225924133328592202029551635563644830496796330303158463211531902708377518411622362650621380079379745586081848779791748932079375281883519017365000329805421514949506283756200551590846491803591781439392933724117377935189002676630133886426183602199427311951496057320841441506232265074095064593008220207642687784312744306253644244729555999249481620597356346861711532429716067305357863585229692206402929215322637912354578261680458265152123232031550747822080833635064746322590979733412619962491129937975940083876632008367672685800149158544187878182001064655849455525715841214281564901637525083800344205605442165119397245317259112024112170503733969542842037624390904177897567021081110966958101152047134379560405421041722679884548034333357392441539055744848193489524876888855970113928753606058789483348957208437164366369306744656024515711862854760652898463170941397532029373797351609573620006148069952724823867508625006921343361834810582367566922597594582495281704168976417567089301427944720046832576531509887699107631374049925651978446634034189302313135346317128214854046417019905549901422326221873928887812758067200072683494627232579120156580270212781754681268737469505604672756997758775337960925374076866744639278193633843824852448685021536711829866837917565160737363613551548986940077856196889089428569931261754509210382675147267080552689423485480094875165233279576325655346975263609885414735295519038739496106486170505067508759743746242247370794638479370998141879713147721765049227452879355729987139651971363301983486576539248495187482965724715835918149713050286156181418805589174738160572474679450132691422138298650850968635597164808806789580412750239035091791173943929589663297854860315174098069146781359839200313536557771752208014243937906559770197035637222436167788166852322439749260094267640019153144896205683644960134969797552122809188340604592670807244799161905417055122526573471780496438408161759576800837844333905223995649124424457013401177576468186318651631635703400904860241191001073549643973330308333373640620959743615005848071651513312639706207805155264848986683305162602484212660020858784145086595286394889720174883648993976879302001477620931708272494041722812614855828719203773012627500052485032048471226891613952707113227346326884013107183689671235273411949536302375420668268488507626183692649197779413088827627249665627930728673360574515303895153200140938478572929101166564581479432542516729550183694576656931002687824813147565317257599987263377994261856555562395639139246599891965814797938117434149714498618439421247651603555692330272399302007285770162635449189214855031584916284616446231372083335580978531186353194324484050108407858703361640986878973788041096443918205674816109199118702646549884869698760479683314627763575393662094105307399606297346758223212239820407418421768576634882471981796786583637746083200209037092408784283695860926780684949708378358418975164331545258649344248373963111276425472356097308407997885118128840459894651240506985160699870598336904306525342187702402550160414374421651213720560388804195273551839688193425869754286118068494928255244669327757753995542278307126259806246313758716040180191573554264270637837153777930341678652211916554830244180674273733904703265193097791704314490656417244437301916278453205146354632718777557672239666607810851405844426389349930244518245023239127798999842294433351160081115819885887417497379550676104324172538305502240776708040438599251203823124968027831878131875629656008467400387717326391795891695002854139203429252276823776116367556961694275984842315137564182319959568647660230817861255796375593416520755062558652451445699193907294452612260833347695734606043315121931806696821933667216386144163514196959420015625692780048683097053608606174971163053483153153606750354129856694799856503666658280516430155561005040589961863264463237566124497606914277882672062341230338287122728135603521759248696064136886967740945071910945986572370976766450166860951119655012678712994159334516983603411586466899684440843506891797975871425705031867230767936950043860997080923446041760303137866184013677353800790389647297847202848589958346963946999010200833558526048319020874320717233936930385179238044911834606071346954552158122023335689321686660244329510107900495458762537260214313919314273419962245496183656338138645762021011825701833167398625710790109721395483784831436922426924157108313895732143869449538230546804089973837563960957108621865897893587159505571615034709115060817581122517521623693191886340138642183783956534074718401973497919120072547999211535194227351746346382178369291426450330801800986904918830658422598248157724749800921322219405692746804632275581648156481052036762364519503099621759780937564023583941669084977663151609833348286831967393662234825232085985776273518419856368309303564290439194223947721100105185798220899940219814112875437154894703793740918301313329424576305941317052866262398113360155094200084150551160237078777224614792980439499342484894662817607593049847532027035440143516636110591917619542098219313548212155884616362385278226863565045958752698294516415078800534687760525647898508973445553677800286647902571307756619957089768973655553650605942518601726366177840250444962556546729866308040996703381116584223174487879337511704703965083297372277897444651155218398197409550746884510218593086880200024356400853936400665100856693631624160282900517531520782929354070550824232037815368446524980093805764221072799126702744023545890561922406762404747678368547601549851740977179728451506044945085823824697690876168364139061901293198953520960169326674166292522325700681954558043211735097139855098410516339583763878442077807962891162421472605948069597099281703674777870714041032608309395981106074310440776882231086396793450610906483791373938296622524562566545541228504046365448214194007885479772699324428988830817289473884059487110519509930924283493677147892851974571729123886373032543780340198705530641104128595603519146113275208834877976824164725362103742731767953502075287532855143591649991621083613274274405295954908907606523480026350927710457753925085256871480538786736429714268727009691822795687553371875840174789729310550887608502873390446390804516279227567339068944547532402734581395328418291780642137071144180809758203175333036969819987452900416201872027513998431700141205219467137829837412680805039181445914435371841281412573873371832333396360609239142964724771520669410066134775382188656847796970200300014480208819259129995205944947977395041547605065342239477390173480352717295365969847950331311516475346775106425763891961576633564885905068754939904356375297472951956354513009187251489083703845223032753994435545226859069137726696230628038348168951900958664561896715801702118430572646794727731077229272123810050097713794206150126263155332513431811222434039341264273872544721381841083530835429684908749588220460930689839970100303040347509344224632300923117778471670844811820157568078203633195607355101732961117671553375098988869038603279826947990001086354925366801699790151537582594265674765353299969133070479264008998000489007436626392096371571555165529761538321574352669717514609823179867322803342398797469451653185911826057294305378848401432714633541929005559634087414886430786449957945405611449124973268253640488820286686506757322229659544785900826718589562237237102208034571689279162082678132715789821546094339235069833193144646020900606732093840637622385988446257306515135036512981782965587409306617906621478320499125487247609115310885664470249755793829172011996014577810629638388970013399091353718185349796752367577845040159359529493128547271435860675799947731962881260085929227261556265017028725540697357254558987139033061042274558823498459441443748880597905723077746845296549843787031271243910870159978552271998056500105067140871799033503489974157079021598405002849102914086023091219662506414254688085541659690422093470006433919948654404992433349571244497396178106756328371132746659877772541218477912873256884674902437256432288328568173428595065469504748337293601522326727843461000298415877888974150538010483582219702091788717145496607223261511008423639996353258613966898961473396175828593840719585743085691597610985653667554035330724802321766669301360157920185626292062549832829734175904899370494725555425747144474559408892945773487321371350706547885619915715477877320481654382300340870418973327667503468496688677145860096245942328605151731896727505976479798595387612497843003102682403747527290738164964076352519278449059329965119259025027301174395173008528021513825183496251018648102981640857375431432996044494238085399408416882540250224090918257341945915644405417263098580058562092515901930041586848078780762865804066945892045148194880388178163136739222177512160380372007149334233164851945943526161794324107903528032341803356706914556398312523371692082842512453149999447045508833763356934477792379357357110624632276173886589801056329382887362505120309329469003384446671647589210210539713664984199024361001221930371380549979052910795262574172951063051610073364205961652354295457722288297266795659101825561385613077951878519597105255631114588472957364020570606058636667822956529024858619613171588288595349952115155939945757488856789161063919602493358245097028704990407753617114461812798219391795665135912286837415925411343890666320448626644340190922548262229884347833172496099595381829723946956658799521735933472704600510939405947455245041790232033688536356880222276603288966855831964346874324418384361749071347186999890387587050208135490733199630986653952930848160863828733486651613220523942409387553430222046871442356928322773227477065331284261235413746219204271962065671931845502271015296683070824878973970547385537709303852793238963445524020457937601350208798469387052536233524184181625771811374597767154204747707742232036467196625839213567316734256093440266911273960079509391440378225989188492568068426932466862140511630301127832959896063328147950317579862755764873826723386786089084903558867554410758519826350788860283274864041433746872374009429205597081391771183820085858054819392887161119989446351180880581320274790097077180984079259803022603309233483337629806484774639718886085636380390628458282921556035459224794245391638897100063148671439619265520417947621799304640649733647044575647163635972756248929264185486241379982397294632286547844997641327111330414277900664833426102028008674309888649192597223397671600657497103254671261235740060640968527424131589119466641246799569466521866379212274392673307977232520235745630918064673399948929447153104450775021032884819330085714332456139702196372953806123521659223209793416406042003112507679044637787257433839100419381735066000801048748918824823772530180444164949552950963445582757429008180034325626021617713812489022452955537890273623930346583225901514521775445857118270968219586594251814397023703925567001934478669627116153068287153490843514115181440926958240304536408843719457667727552859426424746635659526743386233550381953458320478865607746188202022203421676996898281270737826516590543173815780190256838223140665172268981362440956723442836200634107963864018306668689719989036135442596021486267814231914748899385331375534939362440835410908403896942848878297362896334002643950773577536506051978601351181939941457292148412867057202278067785762960726874497320819219738156184926048173134425885945206256523003667522721328994444069209757296139228332252443953377599387754647693822526752424417670600740912263571474570008041103226318245569440758151486119489375326299729769669552294997663167162400001815616012997243921742593643128418404991611275940067132300337445369762754209258147325543804305314387941928298824341075013440926387961233935173589381734148411546546733812984419507189684350465930882015412531301658943047110177112950549732076982271284779106091179144428088194453785130564025798837091217520251148725016161595346660868016289694358390536861041845025719084608155123964600061274949969294990820280912910677788277868133181413779100004326145942854336559839197061431961462851729768500819730368713963180893227752991843025634278673591341373850102199561412389104770756350244977635591764344217666365700145529062570093524079374633307386250792710873941331440910044170558985295518205616840448081070532741151702516821037761831719711352258301782597525803876574459742264369409858399511908501130409514708099551595034096898390022359587825951473704422191911684309445614244971922906036702133034903341635560432425591726183555654725905410942351069224486780899498675149344110486099809567959874371671410396348914285787242750851212273088014359233237928871867133452530470128343185128206439855447781104231815031858754314467229759291455507767090653327135856817711433764216907555196721064394324467271424690314775771761390934889487675092277391188480748209723026678269099273299498276082272738149086143732027670918771614976798148409894943918442800260110865061335832314711766914546780956331176365919948196805038295719703966131079526240704166820201766881720447316275188982338203939967656411018595339501757936301133824551002861819037651771665243345440714820284490624660670407444337877825374770681427638379336123694981639640299479211455571691729045153335454947158962285773346774694622699175142924752424927174926869823829961249659666374071951254488089242768145296068058905537588220294239179700669920345336582123547189060867769947493285907595414352983823436333120521188585064452893617982596486749690511177294950188426055425798865586457142968496831252258339940177756198260366037373375887389668186175011171951570512776605456394264296734385582684248829103422202895567528759094258125078018690074935534900269082322208436316470428606323821626269815628953891209283885823346097193529774328363701245153596958394440809883036864949938020153962148277065509971367690064613650238159983232020347706028433295016153389751853289896919198422826229416998936370351957645716401686598874251701820168271279890664107628274028612116132249583033149633247285343851524760035385549350331415001030064768783250470132006088543725185901445919827111264331490989515983068404804437986040935848823941059742020515769040089256931790160295818709220912154072873725743542552756921606488034376794877725549510970361460336733874303013528037660605917337986176668133255261091333392280525532045267501528750600897263622068892888653640708260885974353583437638984750160574412987301406921091108959294447287210684892436642768310836114318135744785415989403822899261473023921256370148382394465317913420400475907614335295382585018663861366831503409809251963542430968272452008139064301617886236752110423830647664761169370072053163210322899065065317789961180821182327585047833457032018446736496544602766020737460781818121648022667846041617326632047257926243441001972838402898449140173712962610130106533488227037087494931886490766273246719060015250446109681424317490269687731713872953633825442582891306179493170208298609703984388617726734297504689143307301819841826132270213239212327686464313414632068985347924181192438081378977149117337870138057255625718985572683677022779468752451845002024736184051657069545561558394475541084723358155601120591261240088519312132841209147703057491535829019494009655228347969437348523165970276494539847919994962627475879667150982291656942881542053449804844784982775322033492902618652130626570943922882031376610775840673562185775691804315601723166602921042114421671287810665153148145641542384878007882862738371102838951806116418201703318594029251477239234945450693292254406692691884804931366568550412429984353690151699562624522713686403961043263779583342531585878780442775138975529136350799310621311193685209357045399270830796543906579350111582329856372377003806538259189900647068405903810802142283250953266584339840718921926164762674277259083863311554020597290944043646447583858973939687712449423940770983345651400801420392877309632826760750891396516736826274326120604978725075345652398242625410238844101533876251996225571727752243884756089187802653206790866807678983853739297528846804244356274034813242056012405134178149965521271790709143774523455966755637505003711211931661997951622285648423965399073620985706898688052666312022608507255695272931763517953488373814989690566455749595623702155628334468133789356222490705439241470895897930286286249134423919892265100412651268266278285805257603981466913203388322001900490471252690851456114101772607388787280017245241429980243744852058743379191513909778122014962135424967986272295958712300553873648175869815736912577438127884374339642920558909869147088229738232426112669519562213886969962613527057129438529422269980308444631898871464778101916581845914388483563955439595711690009091432637612786539953592788568154172477459573619264557815256760068499976967471391713784007841249155929197000523787683161250048628811978734421249828423143066060201309600209763633826696339626410807330895757852866556229257623091815561041218546530429939467533463636520095751126077657203044077393637998759963245282289607555577919894191766225261645904263168570957924599279227798665485035124983672434193176451845479734585823088123231227333896595805587112614650932928892487282453665667649459039185444114779475793465809427049321821264944343834694434952764252396265711716841659512726599813832282679439673790871678275006084991492125501759754840963332500384386899526798865236967634771392390354017587708877710041230669099400346478688502905576675860863257629695787921548822361360373090649810190225090475888967942632861682394348321924387698053506030000280190078508581199181101952377877681343992808194927400908527494155644109227657408543099240922083315429374412577305698615434662241743713758821924784808670806513741892089397107515237625205359890787825704781870504437466141604840087278024376824851897442884421044507159318587735069200796014067083206620745480441976423033977699533875107023217353318193624844037721609633455930798544261866817295361379330122551740886511452461585290439969587887621537929467711195940935821690400418949161401670556497464301778240880941332524723785789747345638185776740813093939958342292517761090464393111882817262624834421431590079739244015488713140278126692084362682871650988536196641332095707840452468690058591725839811183113684837794351031181805118475233098692863275832991359645089804969361146956120692153789217117771382779516233792531780030594168681951286324232599523369944505411888700376144114661011612441739540595460956768488982003194475027374151054406219835930676519767210253891564897362061224980310703604583739320224675738978578149703779312216403864362552033713378439203878463560090419172505229452731269062284349552018474825922817796992900327038826544258634217655366946480890406916774017460656666293985345555313896640614650427806736945941488851516946952484160486966895984558823994732552436615351349926867187435245699280494120329191305161771604569551486611691009700747428719997480614993543772908443584978303727151122089520875064452363449473391715184204411335642692849097386111550195831928483034124442657978216826340536622370161070470055184116589384519747230428897981682234258916869303852137230829446954556447631347345935149133522070198718381940423434117229950678546489794780199027152698054320228258223260358120887238148400500637698180577674245491886564745987880134763106940950338168789408793394283914424439048683365564184802201033647896469314891684863626582654042355616788732479381063110820584006273048368507046691405361467573427436675088709996200735939157918310445500912176723845588764144351895640142088731581367705756778669963889076106145422693574222446391625983365670288078375945648534864066309743814076589706525267971291307797213773558418328912896054548178252870060135586882626250612029370737619430291578194868873980758488579941707398599333979138072320712801799228565642083916551808560649085112560636054418350964716963046562603030660258729963165859292901023334258803215114305179604467045609662802945814065427013846324161159537852867518781606092011332115182689496827879089585782461164569048408442360463166053547879938739177612358755586756999145165977926274504437714672543230352111950677994851896797573040804743736947392168523132033886613945920262290670156634854557246820489027114063487148898790370764375062979209319873105419829868608622594376927332684211489990707573502690049741702795039171925163805036947267206310667698787104465785623888730685982089468404448226510556468806059161221192999705502653787613904954055769896075446163710310117772737854173028690035561899487200141718703077014212468797769962914163755343308366185163817220473210359738397514872989736129514534750175234195069825205295704196082009051135410501325680952238981774831931006453622676728143094061712975582667860494704182084114615779678081413289155836646097805146067614695524539184770259586125691082531118100335261379673334957727269286747683325540857109156306823284103201017252592343118113064136467930291399976402881833261057118453657908692130799039294762529164417370202126881361725259628942753583021941724411143741187986222404038936368146801484709923236029611470951089573870061338790644208474208423057469273918392483496637282830378237443684800781764710673683099542890956542494627949991425948460479792286035172891252973460857303742376224470427709116688391698387955120858806476714891710496775341936774572395936331628256879480623445677287979152373402484266289889450141939031231418461757399190904641479191177519508612948977057655183272375378536935048225034302111804130804431784122014426634338674640862113154956565472790675017967979354556399137632553576864689581384667647464220035261600076418743582543467726925661247433765323593173504084490256021901966131173412034875084343063477639899993522026989684800309788357358332723594798625713191778002943764020639729857490742746380455790438658558804255177313199363798244585384916909135817320963425685420543449766337844282785746534291430673635705909564116014082726384963690744217671152512103934696191326822761023720476670523988928409005972154259627151736973968503999002226754468413234235104538363135335816984351611773462183955923540660383157083134033227343660583090164812532604081539916818472213560888360657798834630305972969697497905833659283002139755706400995534400287994308621548293438912656199134517466609903024805012240858895171206374328510668235554932758118760977157840550432970642777021636977140453609589281962757200919467535377062910651008941001445286123400938952581291269004494270871062010746931893705945398704137741066646858601451159456485088725034176287253014276887155356818291980431485514865989873178923556851872190066540207428384452692474203290091672471687694610305766744453657522702750960653380448618330057168263883453849147335086379534305326102618349115132097696926467955938134512431325916153456067247268147250539034735237466376445595736528826131425487039087902455129597534665893674250533562346610431028654977133778173575468350234857954707509958196302005613019181417808035954340067506887939679648513665163822689374460353248042905257933506876242405228896263036738225645156845469460263784777113590141524657563944638537556104995882064388629818025041697825212587736431441688731798612251593669784838867447442761759524646757121135840512448469646447613057388207772893428197591040836108656699312316234462875632162516369070228380622424989512192527922196505094426742790733694010717864392675276262691100117607119606699355352133817025288554117110643229484890569392393079866060362250413759025298672169012840971972905601051573242992791337305180113259149699693047162732566667145235966911826988184622021954177626444759214601843456936755418250046395985108284207138122837759453102673765384445565435435087305591810492917796227134702467114711353830179533669120989797947323483987434915596385827749603027002278177171011680523574339454477733217126945648942421235656928434223705701248357596527765736732646600055311707316314185116440002071687619855735414508146809333265619425760233951473027346253337353206901663148181156684076304209757269410453130162097579398088875033226526709216985773461451497132242872903052629989611631178383227800382942035031639106364244208828576436380009854624512190147673438106093018085279137443835518585080271425907008302529036399159775542284430027495167466662389916381637669924702071893766667486754383135134403062580712405803283050137897202327075044155420129688911015730009081105482776346195417405603585131879057497469342665389624831462271437623858976729458970730355197067825826874691344659440621813215515714918953888929966225185212889404482790565433203366060789431245843036370743268424607926373395933639493017725880777336463184415854061752599477126391554599697706190615633775484747343379144928691990716857142008374093242614610443798800825980113987407931608704760585233635060903035824229178539264149697729054751414417140908377437248266335206316334047196149650573361321903236166242980847607406255326323696834946447358662834634401026239694761923097629808035142682469188348745408724600987873725699836928975414374666694759933742527861887741312926807708140191517943972807517454270336615836712745356458274669469708246650524860290519607309133057055130424443420449485905304026436868167538602424877038797747029741610629889639905918757430407482618989675572842578363314383912607055543420471357692454723013096038185529517988157132086757403137774834077227559858194406323631144069706554638050789828328834202981486615793961559037130029437995059212769718668435706314880423496303595437349633461487026625851716642489585686970723290343449507999062022223987998293024647240858133752004669788963174283895934099734618363590851537924832003465923743104945507804506860217398888467836136498909066728260141034724202679828946008421816988734099220848931444457729615828358565431601161357385454399786031511012882198927666214322917646689342423843158487255042134531381222319182948920482715467991346097305890475911679785048519825064323374267433326910529534960377240429942186917086863273832227762823724859694919644747339920871546247269911394122408222440879816792641873265716605081039026594540174153929421637035054370838109165164008122781898588036900682716710734608658981712493871605919749504587625601109966102474879560051051410090000825230723687535393100155898018066487647651297223496962780757924849644258079281283739511168035025909492801981465251942123783941253742019427709791702942964644052590559441924038577714039901631123224074882176563810328071326347474787883273331206151149003447797455648840217309849273789338149138823608614444259207685605155116778581994863898699414911835359787400881262716990628234935517173657204325818205849503114017628576765888702247434151530811856679653618248408402741493644551723243601710430737839678790112982051092803780755737316190944689482803117127385120501880726787504453754121488164873177263370018244068654443530599032178007513939898146962565452043912093192276690456507404183610275045577150746110464954088072058256854419422030716979738015641183529076675740833583512602445267402707955731936730647166265089596248017083281931536545746634481169898942047145976242075485745169155203983126855032795735180972142152070836934987958368042790474368263696110032983061189865234394613105612597134655337745595027582549976403147800355992890100256369447856625298278610737151717106528334838224461965234454294796915088588454135546367432751418844810589049244791576396453364668181891821638662098612736434883097587880009429123859192218824072005075553551696477998547846258346392128857192504650514540218322948206679647699383153945421142254888821547884371097234267469456803549109408838287149503356160238788429404493493249600602771113898485497509671232183771465878670077526785609161905562686327202092815908267656249642916079399157909369994537497308307410210235543199118855933673416642853398843539806055676392478569802020919472523219567948755112709670654550108867216139798913657566298035187815990250441390683174916242630537199971705702153448643026678239158929859858139140164172978203286049372592136338571164662380785732652705839962942677815145756453941771430839558642968188429492606611295152344314427742232216810738714562862351597513812092272924664768844124498901123096141236306601184191374515449850905649212785780575731073810387201986661317782965127325338659181751906229818302182242447800729025611520404699352568594536839248508012330546809726399491365634280738254005047602587660603600703879648568292707118073313164555598522240271895364381347118372237517963499679615590027116023449346268985362737231359242745165691252003450554834863236993443670125864380666971585474771817212768959573589732325794890596539778433207662653780499125355666784013308398261563876591074871279370481003880239827609973853771959902124130532352836656373101436150534771424280762283221873088304443274380366118339072249002289466546083701563709670346609337253028805273516303246954110797862190939505687793292619397372511815606184359285583173107125686148235321209067159626420492637316658493143238930950640591362426243724640801947989860759838301128556190072972486357398684269248816998249142346265215478325694859083864674698074892616650139056299896344712432066065523251670187954082857463328902169900539565423892696308618807612256663926619624567077529253679183191867259727303678710880553021276587188133980627295653661867983235509263710382484698127406233660963884268162395214509021252104159545541432799997129299770786505805811728755692981180227094717010662616111316664067525876279100744370964152327768864685814980582104168223742420489505063817185321066342396126325682537891088094917872814539796899862535815325013260349785929718332730569527126268574230021537659456628823994996814487140994935201027138887171162274874084175327652324096351160723357271049624707272057529859554168240525857279307349717145731657977818027493150090513871835435614012066911680047443325224844355814335262626280075366895210170122348904272985256943398653686582467526401838028902728990753289635859831112278040993728054390249777769358222088717544106566219557706309433942488866094414406185041915165915333269105691678744550876067421247303094335283885617618299860114101418200583297814470824898070548661545781514812154201038000619550894237593530627126015114309657533432402975781639944207638726546207233297071395854501634613898908596018423953498656811668223910957801958152116996257897147019496936550182902189185069482656990316131968957475976151319079208102507105974934835176924538892313484162951497465505500240434925492447119550226112948123156404338781397847204310875674253345784626439013795284783124156887816663536705048006465916531684551077583462067038721662995956822884442430311754025623465389262357963752463220016070387541221261222155263453193461250164983568969553787881051753962728790937426416116137392738936379617827446604091101201784257332775971694711109023801672316253751123808259574653776846765762247324313668671945436600933533347619806772265800188550298780221966692643746506500062314453623601706143076805786710483201403780223828409879087665880957642339543956108537400270957277032028784508107854571990848155080111238568963473002912982228610394645622671643956982417496683649532459477686329406154782205470126831479691400207583863696219671034210504518421644100662967104270769752784818800171583468051285337126834806799038074314773297468245102358287031675460716624184350228992829863623002174289358816964294753406526219926183638411031145671083976306501180835400485490021823639341317561801184125460499969246813186023044301363951733808124346170150771930450970436035091324192694149357571408229960676669931431325837355199749016363924770856243129522159230246350542586822136397011520429797156792790493778170847221201666710195248248693632682899313564653547093578205648803169171457527956252509477821225281805970265740001771626500510600218855807263978387896449571217722204352528465187284105136748209374081444811157482694034523118112399855746493421530499270260750247787213357823177302032524520143654661571070831640510993292490887037642821854708789972781030181284098718087909603381716307115227834839895142483861836672300392449807903670464510080099788898621107257801455570942379928023186389212459971659685671913190385593150644032944142078668285030219586913540486212167249483445832206504137773500218083869688181787576561772627981256657227100046720446781952361119898558182111277293425111735130867126626618422901280733917398282120349467252513169029915066613159682930795775440609288716316965104741560363733984923020010405474487293999980558620252246498828748247141937345056339278075577368219669927858929790599256600696606559951564818082839277434401523617133391017195345590964840425298955654802461839568769672355776297671427320925135513155335662921935338441923060043457354189589607008349859925913542105262161950602247589905955986641119812151956815167212087362262204713318715629049306941126882859030675899919656382928266589082380294931602462763013265006812494384440430656991071605113135428854427299414976264278546115143430534397514517765928890317339085692468613919059663160246291258817139292274103538138576570298495793484703765540283331396674991335910719765226922490673062829131515628336637307308955846171271518090670983588865765631656134673836138846908670337549089257278040236233655810143337195021996152153727165443762812801061834330691278903632940470558570026558228923425685644555136464655570418851923947761644360991240005935325951036494402827025594719775422845466409254544318908507698637967093341784087806564688524530342550867221392932870312659810208524357124279214253979100679693283206023837454733071326165457707511713266932820036822014462816017150112189135057197918962829075072288451002662043696016770856001488757803793764683603651790516967721132450580713616446208279337160328637914999639014512202857783842138242822806078469206388698768440878004096175263537620111196637528444455123330715249712906334097784041311875957182190274577772198772418310436312987631179268494047192370001618582383840236881581811492619523266692773150301064475016580885691853692876698617051059150693194058716543073436488687183113387343917693352674407150101984985993663356696973513441220888902485757807767802180946891714746681968634013541187780446453577106872635728119123429747681597869556530880867387087649074002706835630718725184635782415662460069572974977963705877941252113364061796392303953668675970704475145663255194785404092262773601696055657659815323163488575880371881324343474608511669406411891828050065722270570496794891661665209264215836040478645025889606943312160473803489370113739388429962184368613353623763672829499015219024106872655511265928327521529345473372004692753928356370289382828014712252103704687868018504675124593225093183441157322456813560570371620093978670889476767595368275163278799526965895782145670243750146857276239742387747099329473415266470261263897736839214598500462760764791683325474970184413940338165043597872934550342305740378612325520341911834722967251263606988594953157788733629000462036906333700883255925935396170900138692189301932430428597835440792099783531338007054053358725121696896568304191349094447357236921195318475525113512000542351680730894443834229703906348111818763383741721161944616298130885761977189699493199761198560813560565394830018642403310865779919178172483161760334138244486090526100550175924332377132354815384425719191753082608268632499213969520322844057183092248082457822726188411370805601526350131469832582072462523837734618857595687665709398695820414080220375335808693872035403600591724235870466548868718546731004520178568778347708780193730956319779688206338532088838516189178629256564976312511909630956967438654749867015670670037274229587575728113601586489296899190444481875281610773015751827059756320563329491315896625976177890519125630213948478898712466361900409369331272245075345439126487591254552715563064260337014350729014649456859848610744356795798638865990359784128834205729091490931191690729846899515881440822058444301754461421994717617004333791016714006349678356802978212121334130824299348286072449433574414393100786766631193909124651963511296757537409889241955630118000730360465750247442505660108020434968924208222335711664501210153083847776389659239493463132952266013577962152220479791857238897860938780241066723934630856899281735537925928433603962774567181060870324235275360116364630297012668516845181500445493891405254078193914910259961211492895147780579728693582467017238602658529420862571161342874898692410601643824094186214433581121690969261503746355609993439886318439195607273861795615938531681425040896868474292238738084662871798542368918300371592782907225687931864969825791786584284443405857189806355259743174233279000533897962867734461632960520202990231887958462414161735249521171765998005413882704653626431158923150626265911693317847049883395556488492849709529081062188277674441259758218063622077833846211743962777251195678782216623101006868682390894116284520621526713515675566963560430744579274941102803672383177074088407503151305253456426628205246778823087858950781537245868338447524004340489873482156803737417477266831105059997181990171686429673982542003689612281175971679904759482155708913209716887297646453436548498454094646248595831565778770220558855871074232308864833075475242073236559144275141246003193168573248984307984974103783644691539919640578625570793715272096715369275286693153048368647302988818674987292059227344633395236396670812790150919203490508636145575996633642651447185784043858845520215949533786487307728370759947521473482475080211133921051355993834264998098691876824960634559141103007978088610345959541884764883684964438095928903636698841492380391844197706307692758281319379843708458061795435420027217587400795109075657886503034794775572471336186752654216750902084436174777312080714784066808958272405145290682785210476344119660897652122866767084495151603438119613571323083642091254427799396083049520502208095855479914304026148246642600746080049889118423947870341412577816707895235757570935824827465766197202309520150141073469902411485078549164005422428967549029626057144724330624998341201257265863396688097984354938617577355013929093577261737723223952080864788033147414839936925949887312357777003596523947873267462242530054881971738021387550588102386686561191111841133788833160372320363096206692091204173982017644473639517008210013460902262225496399723499637810078657347450982067272020155111913197746083485441399528617464633497847893745929781214091623120454872393950628985649005939009178600868866272029236948863943970553023987363498930694358095017501865260527772014315719307130489972719939990643768412734095206843830103304637965209839893694933206264433930915861060162084900171877728753065342985373010947124711813167961790266612586339725616903605064436267835633096098799883386281651427568497659886021538460642398836941958771125008349669372558902500287656305044647180324556450919916365634996944835229980243982866169643960212414293621692855500053598108582083752988058085515361134311558725706767544429827150285916446086527955789183943111948318200026674546961682131313373859798892638597699500140141739651702719268273778045679767340971652586411961867616513981672998918373562186643705317690563455497806587509520719730788487835684491562996731214681044511464082591060330996859250057117381169200634646325112421548050699302259762557742388085835686408638757887906240885650257251853968403891748049504168656791642268074808891989146790407037445756998994674037570984978219654411470402105559811592359260136521898706526873302082410029435633052009845698564989895586199498094052759582115362221293017550537705675934875339182104989733997224424362554050705405513381873699616825614142378715489162966468844156210146928244530992880681495938917521397165840197790482807460104797621940581438676495773480412482796492147537229868893206096684250987933732651809480180246393430851619658115503569996330401207231447846408679033779285054430946525814414101652413949651199046305997318527894406020837533106666579997132223473516052895967587626968870174441940231406958024144640269629197811073518860272462074568748989666212649508547356205546802268097912853939896069864477448692133696195108768319738386959041191983715340537490585030016737655052017769922946325979733375119590027471425490061100620469406117919052759504693311651497571360366404013851627939978188745212511945557758644301647575815211616807513214887797895899335892888347531039658499646925560935695965120220552438320697720728717017017641958603721795076186321054991921050399041247081794931415001833193763464509825893327443346710730920288969504636075783108740308073510666548487800497508734954841625317794267217392636939787330941156482075260269361139241653694929539394246636058895917261018989046025287399871502442017999548526249021657478796157777915672821410449591190455596069160660317027832502947791215638176099685396330429924508922236427417503298209477221288173522747611274477656573501270071407279565060411160983233734890995432370565951299407622501971912328291864058277253553205327503280414970191092975150624511165003913926402827736880539939760299254015820069098733037581971566281132210137303549061032169080491626393014281993971102591764916116408027236198874484075252912340691864296057101618053177924902453019756909375958762043872102608418777925669159704302312181954354622767191171575523552550354583996207345606268234346263028176012147523096755205697267180680223666029704319573958881951251867763552385852762261065500011332240499822390321695760683284483384249869124387272770753343759626832217370250199698460721426296753534345997279448913810638520030523091387348931659617180327518961908995129888272639720191757059606624780960659850169320267148785673219944148628096527414947920563254135076704056355926593629512034253333083005935331136751079145035536130615055940407163011079688599095102315699723834722992689588408394623623139620617413650348295975784672504899082373478206535046223856354492469491574296029462375272852441799284763647207907982473027065855424974637579893822178964387338757068899731124853479738731304709402058536704624243579600021194590139325934821236614889133351468009794061597853242031506842524507867835880323967771091092514746058995293298497258146837453278323719771911224224234121616846550674230769090801060561896262448258220645717879910943728092551903881524082056955780704664263158554501501522448060790849509932579505649782823715874683088545572107071257354376714113127677722403458419492825107229288564191725949099625729594631835433407946579405301670095623048175357687247192412467925467988694317950419051333026202274005491310071741012427452990098544034273195621326716960211779132071624438135363250877161635635425556790133985272124795953780947885999953152315520169872183789438862688610979158675926844883555210259603406796557443820292730116871397163495606426373938416218934062905169933675911065155675658503529580267847879777314695634235274458540473238853764625253176163735588185648155282528851396240196635564531976605481899495560986127470702552300268318089358456572750474428943786469085086021529905466355966721153649070545534473670650191926007244978315994964125363551505697038844405317373679258924141194244239003722908645446568462009200471476420733147726015990104609281324667547119610255152860546240454819646742198346453975456221884269291623677692931531324044086255968956596958344778627497101854952035129526788949324097102061975336224941965507696733551370219665259060824030927857438102195354788028927441816443191834284710250916139558555998659442460851078665224000270798839185674719396110493167887326219816086148001600835753622608204033121679665354797097228579665923132174013205397508207635164958132447230830232942453992935768144759159162501130809001892662780336273983086752431599177585996929387035478124046227445167389108886455780230215589423586387988809173953123645186381549318769468564428001862866972495677800811267578475005979951075166914024912697120467193373746234594185043119492838781398529882381299003199836345575352102345687873326455793653384119349058166076990420337918618700763943318386343196382900727126190165419571640719566456557358705765967911742248818143694761048169219346924399632001889645583668982193453450434755007801917247435841473118820274627569492004509961876179967944564614796620064017510061234547980695402331553803638035990778658529593969714691082262303633173409932130601286920327696140449053255443515448583536312244092848069630806152186323002376252854301019315030048664211214741263621185970925612768996133858895888158739635414348736503616053829185087439770093526289906810290044024866810657443948306051886172469642316239179397634548878705081042936049095153569778491828868552885928224804016952752750416171592972039633217907117022021727356691588400384625999153400195814011010689800572360143024458500322133155247275450425325816521085074340637909242168332447372487862885943591293379661400657711151674543886432719924969414347934390855142984380790108632277678570890165727107375657749414965687623771190983471068115710876075638573304449292507941009085545162881087984194550870248711893566263444624675852292662661320700548716917608007179863809272411733640604120837460405490344794449312145089228986730291640319995195558219009327886467967481867925295563248130088444891212519833833094303626335128312126116601068862787746341277830388639501760500022216754538246864234350669368751760929725195133050252017517650396192958872288186616764902050735497521319549962713460384368894010091563019994592381951895137236175595114081982031968531299173341483362197731738526276461476593483451313904995455313584657087028045342107301191275178585097128255763928975530849961627535411746360233958319730047026852066705106687037026603620139572154578502361039434390265647783186643746349199313401988978388025824223134218623199366158285831693898798503332793656382821065644207333870315997676044821746659082795728644858723756679322074660131091494752070632622392798623951379584780404607634655585981309954165301215359467171530151554314725549221018311570738583112072834062938977210177699417923856962201978334191642700786165475542069803790543486524872698632250876206076358789934805559224235961886480186599654334372224530032050129041524632029846551065390612996882528437760262183016301864456099250386179014957118760062678346740615649675931027363250936735151344887819774869507193061663694719810037113345488718741361090435951767127369186912759901159146805291090488231455524314155639884687558725071274565839013246644785445300447913552103053377070481281229976151804023632234417168283718343660305222227496252296375464894914266763916980325449642825922962532234371329443177453972431328300517778261283521502864746427938757590048741034592120448012909889381321904280798464948450122796362190097655920968776111641201684839981777382658592150839621420068796168325991301426076926018201193384438696826887382093450101286236831135028971921852166958410661018398056942194950679488315090977792685150418091776583039891617582528241040659579554380587703839024134750019185984752109905664302271696663578259419161398913697827657927436032653665603293107181995088615994810625138694654262471509239868103234289042030363812109036046668928059853564579638723493625805848917254236325234998063338255485935174981333837387519030392899045524254780117793116225298786057424147368847119115408977117064101096976406295613586252353596132223618259840058694137138299334438252549214435795803194639882913967517002344025086515390228823926758457909240385035547796686204608737048852896830286039452040408149789036557464810874168099393494953590134336396916020992328674455206231275364550818509308702386570761929875316119824654100978865039176264909776108489841569573506220546315864844285507342896721249383861478823899589880355408965698603022343724645120349352150017333546476038439472184917813958973447026598053587106965329436399082203640732844746834190827608297805617644891054294009788824137390600680683684196314840720882171902997060236183814379514484644920917406682335396191239425751739867861416687463245814382266070039873630248551094714442245894433631918685276740966711473647954900387613796660094881747350088687191882331369076793385490327881560222418121225365351740535472929491274509339044017148968504118244667566845341555848570334317901119814876928856144350254598887489201226037470491616693875078879936292310622522969058673792756486726105444250234261114255469297203415998703486784063069401260992448992036587681952677460764298181964450106959361297660425281076363281283878335027245822222685282988031407789492209327789239878084140617388469595052973714983022940324357000706617467622277483029111174327893465381489158191823067460992841408760897017708498537613993667760264884088494711464797986034739797927396914606043385278668367238722874498469023960535122442626033718387985119316008710814362292215176032438840917902812917348497026577845410097395857893802507592358320806343160849894149038888689944194733977480593342869168182893728202191113672792974761536510563182554483169794951944659717788678147819842559545365101991874556185016799644526637975778516804132486143207888231988392821463655408758185493659385082805768351826601129993628574562851227321176369239484113101155849895105319735465755039914562663665181466138225026492411856572583210532511242464738145226449781502328312582791581781937693889255679751818446566031316320574793704276467611274667323087364352832175457811997697574183579467155690643309784101397235705780029353139483242553730286497208590909670654660941363210503261105227167866948682572265489312554680336046435011024524882429773462031421597916754388859046343024367571664326553144072264112529155236823274758701511480201459742457046863223918860387317414577483515345496993439116906772226301397436433007078585302677517189793461093992487275620570225801860442660537006690576899259513525666412701926804650708732354710652424266786269186675280954400254278228074961363646981951699388255287818820577577680065663660700036473209537200458485808680348789208729098444711489718668700676621444826162798012084404190608569112903921750216005550309878888155536391160605062522713733590765215627081738077667742305918333309585242479248007011440881757219026403887083333402302212817107681326459870023632865737328548096068947721633977230568487323344439616700530795720552936619982041212527701150843229384112859906497955516758083774239136614868514072294739841615505495282039269999906081576734558436713044161866236213680902985622274596747388216411770709142573376046443839351100581861321410005477308823219037225766739781701557660490416431281819973334337537702927166417117976830427860058720327983630727651019467807227073456394360836544701080841708965848382505761221774318901313118918936713189168489681656204432591568815887788188649467856132637356464646144845961102188492730683050197083944692690716923975191003942991728540230456366531288173191793091131521607345581866435577572668521941399590910693648357409957846614919197202367071080256908351701168842442257223583183131575420622083221130638935991059602825213000053120927863108968388626410281917332786425045285293970485297215975610346371925330774061832791327327470509698143054960994574378827955710006532132178182665126111617490410904753817915668793401379777682137394653864032450526747807816747699343296550570976497092095684366831222244895734586938921723345822787602906992010320951687777569505874056745195422188885412990424193617888465763402146114062541119586300428565436330005996922496826420193670098203341548014667042468490517531800745632825594776241939676514023478408407942622419810671674364026612201836092265232462938615498841541585485666273495584923252556991980022871561715774975681240641564732978903462048535143003220001483324445296136046760306438141984692992677584313596217209191282789190254392204180084174564325757765669208291033357117282701909313000187708203389180072645470730833917019853804764104806508828097922684155337565683745042615214928138615403226579247551679140890067086857128652209497987652277464136724531888344805412016906711569456673546810127545666440340504424979419088050398046983933677042181207336376557013495629765046388032705402118932555498641379874068342063180114963582897471165313523934688771473705970362176570907069132668384762453531892100834734231624170838499501218228804800338902657863348876346913033158967041189399274756672232611395844005991761089324039846729808568059834451916394088623522256103494731914930427668538440305114069746986429983832170541865484231891884391551874742252656344018753924812496156692275161349022576171942449593775213924623445941697976561371431686255587826483195344288071407867694886109272722129619866643766827806968952142249086302766450152087293239050032197363209688718040912103334439916369140056405652929500522633432211107224755357865326389452498312336413312732788697503505431827956445961530241767968413904810625037852973304620038920315923527071333922365107584078638304121971140336120130468471981763164714207991669461501034551971954240570398113076395802329613495072476770100433837820464961122505649639058127980489374489321528882271303982001890580521713694631774812373711138793320848254475723477131115357584419006719927490172858825962705601960054613616768305053516153678382570224339204374552667806282460440957062143768654714498246502477869331911531301765920919750902351472115140266410159679066836427841799102062592786003264219687902097165490862326126899050470802628938592318654046030823595434131609933919726387340296949739831331306819187387702890107683311212876572727912317002863216394250879152539200291635077612882003463350712381626791327462911920980385140202875372997901132932006533782274134951135166427647333213057245890118825202670698717013925042699351942442941582814145004587177054588194543219278751979732497639802900354492010483657104897836306786423417773977005685716306658546560235724969001502770389524008051790623979779965227291636729713906365859566651759553550319134986701101872958157769252656442070498382779638303466597730026544670068319451169013856715474642943402789212534503624794642544382024712157420238348325030386529785742597634906553564457059142783275381313314671812614371906849259049262137583945783099087145109057659904107541520821890556354678639388984815594618368898447416239328784142626278091605912222787819577505784956370315722731857773772038450694205939143712806146375122251455711510760239158145274678726667026154307974157015971206777885034787550582486734525736570916870650824353764979876231515953993237277535946090814121310526852246948576652418252150478458086046594729550578792085735664142319958602690791786764853056635116977090414913755053661193849997559958922830669996932146598308881541097940279184459461705372732713702797391804123565774776947114002675490972354727482327556697678602261994712918672936769045467817569414105508416538890546486670273767490989105257782504121009897368549320122289794449409480024752335538906598852944361078989770532230513841006541567093773673835597277985879664832586057622558448878117635400352230584627178377186798492245582229717189497734896851659623244443976733624771335148634907211280452428714425306268460156866067507455638722921728654349266451145447011355619647167363610094788474401714733247821537533359686096902938618607077016567466562342595884213015003932162408033687844035375408831407322729884644004421396721031452577413653062142893050902274823044756456899347423299114427586342522505567171529350223542740039822501901490258696213951372276297030241780326113761771464100812895024393792883654618631638714884373481246828138037793051934593174892793167660264201558692794809451935540871697375520618131586372001692960601743277389026629631335083790467808006429288333245398072232250459060281434420506429417797779443762419827179901144972833499121412077443651157517021772318847268831508320136903523187958534261699181695695136669516822042855923157678458290388727256557983901828832558275377370896750973109867905608798476157418422795491055241226694375758087885247279749642332392673946203456765974365944422326977021579272602126436883861010453924534849100461085101629509725740784854685122547012208592604273141671777302771888942032529685867713444018736808679973091436902620317967877263507838061838938679765503974051099658616520493236884944813921193270181935434750914515120424854077969934626833861540744278150850876749505958822069258542717089576735796219522642367966412964715557526863420766550250940242921710811841001567621311107816108109459997176899271000131999629342375898579311811263299065921921665333745859967663702256563507756564929011876465815198474201768072804240969870955629722735954624546022642770644254559195521164699545814096084330147851625358566385481238519553328277791387607723134090402209231761345629646138547231274664305583289379916747264999203154695697209634693213364216427386659627385170645740294718192189524912152281421078819270056892247699027741924239364200612177112808927635695156564042308569711749811574134927923176890454118143017739343114060525067396051523363831332472464458053293461005080485022122085288857580933521062998414517355410869803679402231231286075088287184530431093629741948949842911262831529218531026135656936780676870454995335259271644516102871605705038221609685611035187049791079010190974529822172642671405236799052038611185175689770052556749130810357110098891422237434239433665628236473773213348348873291917369027007929661690438752421950213183229393705339130127870906969365734790856429144272242864063918067697142896718484194063417359069312377152930862016550628323287219093107284158885237227440950918691291623787076506699483961978603431924310922823423576576705010324265972189646135408951736892572604681553393635038107611584496397063300715397384377134001145514891399985427243676518464392704306250643096947901262515544629983945340242477631074058259382212898826489435502476197063533680104864740843788318400715757782135306976146680963503868662274805354670095299448768292721693554935121274333249853747035030049309347637273619418941676672027212099475295816072933871496609695472824105869796315123792577543942343194170880310234589306006787215722921578911793879101712923979278885545606020983211887445543320790199951264079808435034345781175743941522380790551869110316538413492951338775405069152707218293041188525952342687613081570036069463438221482761062269302318053358143334405491909778943608250118003313789436053467674168977596901472115502016448135523169048780561427131884183341397368345451161680227038548825159405807617293493391908815458549546469906147341126750348561655950846081670086717620601560718662777031419192253277608069876464954553781076329206746179669463043983391548191125206323579963132726902607511491504156667600934609481773601722889234245399191342869920152955323069699790045740450095892687561063892015778041519645865092218861891671842044730378071924258316325349171415092124217610505931330294835509465108565576571185148716410883689937522787952541002209490824228996931296151273124562445603155787834197609003548949030047581994102742513090147008313482563458701791850975732149541359378766862292712356142320484068927606700471026212465595099703813661879849157719024209222516645766505253019216162960238333710968407089444234680422377516697840717783444339814633747632779655443872173635074588543517870854124651148774669629056692286123471082941983274310377664705060262679285952540206095224291757416751339509617870979439127021425115362113728002653175832926702452810806186512863708262832057700733581254316674475231871126475692000350124586039855552020675736318706055233832582238048987035204795379526994911877986979565343619610496517023089089754811071257834734133431918883942468458652779831575998561466015666971059542341917463401119160586751713668783957302619080291657002631528574926647858406532704618745481648130165414562967852843941550824204476217708173737195338463612678039532938171376880430441139829319116466870106817582715120195232407523201340952738246783017821250000455941367424522717804877563492466942538430282763554816819220996615871499790945056011737648328547920770745565576863097881523486765037851689836405413559163235639242450871485922418349817186680480348516442308377891241549290401316629783544071974756230491987981348464936613118500579242018216340420788747578662911958818542648163013876476470173361671258810786575269085559838706997783962787056389225842124269788927611460668888681993329404675890967484678737093350654136381158997804610639343233081047888208911383352231835338430682292655847934260597149377187630791304056611583541454822239656579986607725301599268986367207958891007252197704934418098181360407232813672173695484420383236705016701734103089809636567809194421762751284868686313457454152732842841485315438357059503124022948422533819526998922038129177387934562183768061279413246553986515871213190315502860307779304159102254607830737090768311676831146850549600893545329088068524120789213958500079651573389946208753471517044553865771663936827426065061926781489929392130447323658925904753355388861488837156932207930917242005588588140756113684323293851090977958505185728498521200067123482439053053027008088151703119052888930745244671880931050329549109874702983138120023897746460280170620483541751594778609467151237833295867123474137938388346177264790779181620677301111017992358653291480975993076389413065419585800723633686503724058136835123788179990873404325052633528910138847276538852647154180570421731063258345460810769858373067622237778144787291081220923053486075084718471985647583191393006378290434651712429384961139944000746123572816948701935171345652862032206422331532620890885432556204217757858193323365991405356804220156285077350799583715559261620961389151001505657178701181274443445665938925809993087758625766736625903094163745052637396870136147326776336287609824072977495696371755529057729076639780723224400110491231659464317217739451026735457718263202718368618783308451289330431202095368254088826859351370907359067911550296300954535772362557744485643275499989124287367031478272784864591315420757499942041052228672817326337238578728694556040072001513202584297736243006451097800857356265096581614728597324495537190779996283062838083746203100784317534704585204870025649200817880785522052620986321154688851247772463468148507717839538326527809745366883091332750274461164898443577140017985129347788226002795168995412250425532558715538034748364561023528594848783541920219726374504818102342610256337224253324921541574494011133450342524622134106936044791880883211737245186042699234828166960606556319641486904051141085321063934581158177155993540644651875859068149176080365274094130080639501965834875140439030307329383696213668928791475448664682617980583418057613052069193998309446376807684191073842349389300858080308528881375498663096051009374683828150052959775735958010013621148563358586158664075743987770292478484591032756791185356992727000679936511558216727978217806621420988626130975365669891856950402993189719991592236081154329136585192550957935695356854754035604943177177344190570827730102087674670313982740677137663900240029058295096438419531733818666594355074960660368933457957944046325577600508987994960890865002966037776805850450492503639340337765771973555457405624446922329613076458631787227177611434959520187370498047923060749556405434598024149892137511702715336362403092235169672994497061597745484125666149584565760195071675223163843679713638266776078141330680784208089288978036044788564214649680120808693799526041785708563163080743937982238585056027466639042080243083951268938219385306717895053163208680784122727820675945166476312721409533191732335503982998277695861804583535217804861415581459585099706268993577099156285184406797529550550399502426945011182893102667655657796766135157627185581588354309438338839859635261456676187716301386377132726712017386157084876528976582652563401697711401363942062270710837396351198822967933544442209202788679854062339233185240418526078861715433930686362769809255123700626558615593826463338948928455310770631013956920967957504069118346510773771145478050291513805853677991124452017938416600932931248032327625425362161939045020618010400996314775759041315511767021477440389097479710529679042278607253484532286687947958660075298363959543047597096007498059864992185336171424916897204648499058900775311475906483216292517473428401024283950401165523795434794750405340798430858899559681581598902824948416747874620782803331652697543371316977521806446509041050247699549812303454098156862985867273248855388543472726406450319282213824734273563231400162003981037198331673352504316196340030445081007398588849933121705053004344245574570865376223663699183904327270267434434054296211637595002052938884858880624300000861969559291314900641085503649823451190825395618818394989624675746927993988117280494903576464929759016199855515006824191759324577725347467450572635478733594511680412802737915822989976650145606316396187631309282742179227717378341487882824257169318282680487712186280621422018461606313735831381130862781536781124183496742262315138474582268110640986041607115067130659019718961561640737306247240509261122411033184072370880344635635201969004432210596862703020307606235104507713831532036508541951522704903150630331412347010782142807963105804074779180653507287143887870643611862418094418862692620039241986987731002258511035293983818925784787225905767489870753263553802918292930492123599828869012755245810830997010836243656386249890475489486905496875848397247824271338930881320735074846036140156842599319359351659760157672516043502028759260252379729024396805363172942075560763845503229770322255321855642515945840942815382925443819987631718079570481327882505073333550650328142619166986344044663178842045314416979925284621118658560551783625706069722660751458030528619380463607727941548329964451500830077650506342376855541742703075953990479576972740268437653568886255392908746268895761658266652992622353985788169010386811496409095119883550923440385330557719645315023611352452961732197231854341767239227909866303283433599507636350379034849980701045222024396960292707378301799060971582259937043395357246150474631997612733458910254247689745291163092490154490306015285609930857054505019015688418639234359667099141424992780719868010621441742792562259078723692426920296342997288208033758538400045017717398343381434436364084588355920422919917455427044965065199740609681419357149569157240007156899248122457803596616234002746911158636776098853278965111955506090902794790856834393732589168315858073855645244740476101930979067023159370579391280367902537084191382699940365105627726832989478561676072073992316096140547761351003627252777258214960247099984175857354964368568899747579133811278125097448728692244868546193931325083037860267567359091913148602874463814119594191554530718758704386643486632183374581592154722319899586901694287777495770299238471285805686162415582585510751003455308052281787728553041847134890724876343674188147912502422179167107178966672659984068080487215886765044264009412456892508000834096783711748008604343874822270233542100969725700202733092501151168105997392476518971455680621012267206057124435382180442533211058388186181612972101532499241067287048207239832391413592417071859805963250804731159695034602416939415036302717197605750084523701343273860545815750508566525470991936184558082313662321810942556891694205943381655037194132149835229115858141491720183926964749090231171777387049212186324152396671178285020064204909887619147059136168763576157243633052825517842346163932293309785495060451767989040931891782408895358521299090245077011355532222753430890162164849519049876311606000098144200097193765225900489297327436680601667257846176299568557647121596849811271945077879439909811447310589251773822443795067786761048505500441691325871273657088375572855811753980169649483438889818135097577278479966548091815532002476458933973839302412319189819386518287434995423021670022203348719921515949330245092305595281686236340210687777358302412968981079735362652732647817846606999098281120794290462549093169986317451601626778801923647887600749893071209080444945150876244812315262562664735503759253385523011220193740758053119667692374692118697062231378777067725199953046364171951406167705983183036431769634943224810524787154769470178435410626382143829892507618313043583749335728753223809376436643302632861202059053692360471074549572439014064912574793606458408980890357998430768690242139806622456074730235771268888110139640701532818779576296439231548761964169211648316712512968708374937856010143219388516278699999165096242781849322190838770594212528965553680649581579768815180740022934818430169931912026042207279647123944144171506365319331828890744192725630760822830411640176464885712251074310199250567888111388805535716422295402380761842743871142148559688936045354932887295468842936375584170054679103152369931392985729110677915840890554436366784834798023116051841611176737519893458399479152144309087452487296212881171364117938891687941081449593643777981724558020905309433631204157736162096430646952484561032007433346382561402731897140540166325630815148955581219172451269452817177969914275156680628640689341183011927977170258576815732920039776080952612045415715434350199534978590904318506069199934148473215052267725383175502767414082632198414483978492326828053929883406503665133849938110699618614462175767092366886334547219609820423212243160873943667890345729976334518102675409104151237456802373448481373219645191389571330274129035131336023373437206881811916703586637155438000467237846070901153746857331574785993954195934710436094924036469713625826198903272503912373310979923338822127908491161164908041532667325046357452690006732879304000622389523805684466523307296172460796768224668241259204980331262961480869199276162145198774585408041235357676540734623717036172111107033593925927658659566136806632047857378759243027934171234949822633783491837398247905045859636791535443143157085923065870699496288841830386185923428178940669303514014077081953013759633165504053428178896713344474768057227642428290201424417918770480968994321352253390973041557219660821171750401571667434037933820084682703544305053468045672817867653414305906054518102146266164391783982418337024618963505459955667809740121779186547026574349739568170815749336107586116824092225462605637368610546079154063969450520989625280013739107600278982174993837517773221796837014691916525011982857684426322623292378346677123202040571907873699519550155887712569237782684081129657034959114466766211146974909446349320117693892192965236685328037394395561784872583634469830008106480759387288709642127344857542752448448402194008177562806334858268134646640152791039679587441223737547619416145782572650113490514521719729629532928659177062125283098583143630290845139306492876287047695998109360636325204360961474671802714655781240313104269526480155802483898987418097675373806494817741798160971336214292696721987319545022941642810014114617212923665852220422129856121901699982459035913617876803639529230805915123864105741401352836731603358424616143011598615219186664716824376257945956415811984301208290332523558482501884071292162571811435921429440563617962730230126671647440571482785078537338757414560288152176646098359469511472495430787122444309695232076557020611141017425397763357260341447945506720365831947307667968703758945765646397864333011372735302672567103114569887091510093986192747317484171256829522359071191950012963921294567128997200686040367904991561852819093670856002131097294255680087356470219595059716209489099412230292214414088303185506915359416114654067090920306108036223195496984361861339195149048761411032700850279101986352636411224528492863834697725470120227283984243059487807765637137615251522143167774837622799847233436253554920744362752299917422129300062220194225780445689232807645698792700201415267734525751727110441267627988561842069835893064650490400905139470531316770154482804344741815613784954308174919086121201238955420216155991526441829332613021326902081557757498475025536150474437805748443405568564548973677812863778804280634315254388887906962322622779818566824983861105474617483847689393677104418492736507835473158695819536268653642104453803910194093723588959949912777688657034271655153145129586575195760742446761387323073604071196466059670465548513325377365829673082135045075101456304428990576054751335274302289585583566022308854189807248034017429136361106218433579801438216694233499430026996659114345231471330747074265374888073063805941500813869795515827784668558840815526456536460521831393195934404406502827993222705419496685977341983895147903578612179632937258358576670489007788426329052901912974525131556282260592516082888395374824547210018346200270917658836351810572188277976776062142162344137699052841146314030657083915762716030638803974775403112815583789090769575384719690814002059083878556168034747020785723352475463067389978927487417584086025522387879847173104309984692048344237792635045888810396160038645024363546093244520890667545141241305926385031962547360433911850189452434589812483365360641077323831678691574912428052234997881873014101189448560913310440332215172012390999228378537490909017941467455962688968807196451919374348154347605020988178298996012100470699238549086739827369276293593452645788787753388578518965004305582858270228431875457851262189521679541493365636781396785401611031273091164874196337353466893732836126496423503317546689243035446329291715625400318692753518210834583838023531757369132781591131389841814022440866628084611803151608994464415828115687961948733061835415724451312926955810047543706922627910214432999030971745213741046904105330870549598418398115008514457725421655617436425491494031494611847967312032200710673770940809168930030229355646926862368739826926850318581736345929353012108037248276752515717402427395312374536468965941299586497090059249579305456232873978205371002065098809079005567049500051162936486428802881164987793582440064173489479365048081546366390013051527822244754124170677961503936179041681839506849773714013307403539074168603846238008032800047017685503944735244294572603595507675999867028033437306325264125395196501683140429140079817783214866521163105918732328161807510373390700652462390034002026861494899790336590033386861818944786502316869183083539471187442978677017518077742706165934348771520056717329035521288016551397233474131610807554976169438004310068573198544659150661125345010156264285903737224360413567049921406234282746099184988138063880556654104949879267935357112780334334098734413939989579086343890844591311722780789937396798068686826691604295238039594300647015259818169218414845839931832959011870578745463956544964970979985528833448581427860636812400595188338903654426948971602188487935852221147569681817143087762604797476973158648018795271649919995499956603507744534456702504589895330458597073855764642920052088286919295524833641817486978015842880976928026202332655850726198804500482445310772222660749749257096110301473398377849697966821931841495517658602448749508018398217150578737351591114825604601146639353361580130331429623671682212167228467238448703973478179122477853019887399754915438188389746670619776439042435765564447972848144914508722452476913532316523180330840059947495928686954797610215497349477865941086272966327429626158605810651119193445302347385475176255782201465235230985078021894185754573673557353345402600317584192147520620844026133236856445439732576564226456115406460587224590811076528150833555457680983265367625835346928833780709274533466905336730204398214949508178732761424692000720201548821053969209073779328205224079165444760255244191940822288927588953107384803972530993701605425668818679135298077538773141877941513786404982268104974447826230013513045036843426832566239893788278813578654568627136077714422012217946484182442508589497013764625958473369910781993484075058996179914034208677262622115479409528220408629284222163457948134702043189658629198633637937134053311651099504475248817905859828108673267241611234830538364913040024530242707602385951466060544967908079022220599417080434633431939392472636526820568463012995723905717915129489788843474915744028566206168804861509407467520775666032678307430364764257780388617206644906368341743394000763445133615380681380760183654993382106526134881594926882466884914775373671948578176935219675190956393424188324642352875358244596469708352875548048419122717907493378256005368780115144716314653943272196269124751600962935545905548896924108543645891303111645231339454862619753103087643883506021447246881784755207520323313747471773050278186384530987783716406199476551246190626557585548276142519440004926082387819155579551000203660753523734472378312352663953483365979868419361078003711563364802828192728496875048308119240875646322574290401568854358109236379404505503702281884004549482159818047199457845706798022590744398091824793367344481826619865733515724457347283216759123497795690667271748612436262847675628803846191406234449424467395986802386510955332386695340393274030983247491586875753789097620916691464312466992488171409369186137459591195148381194220495378373943085140377436137304071980932219869538085928911457646189475631834745698822198855784231722134257259215052884716609174608595225816229791947880969504868646741640464852438548437678261351134537075538230612319294446260536269524430802225021447890440485522358300053863039198766558859646670755376555575602808125499516021781896372294766028840752016203396437789218589075729004294556358300966364827669908292852798963787247575052802896645187887833198560566967119287924632908757948864757445772707138154529533556712324773551502859785026474366029561150377958848426331459746647136555813810300569496202789225000463910891318570748436478512013553444439209960988005035753266244980122628136917570127890731933174850412288293757798097510114933476657704883456814966533803448123106637271851559339646856270347398267520584495910179751733318056652898966679912167086453431487690558697359994789635556658953350747311619720704967692000306895694604387121040804397009689869902699999540379596289873559457485979382549398672900406063848434548601786742114572469725848324185662051237666315839274781442400930114657406271422076112686088710538718210312294226598655630245067892193094798815145200860947338033334280795230550830913626084565065492729581762865523602615980164491986940763011229854459070574714047378640526450209714027147274650189476629761040141453505387309628916742642030184009571111340675840373282270544598662552318029025839279034510438204646089161953343271644329615054909864294353176334306975425620027701517738815941798515983420976854560633700942778571750436139040403535487047587504964203569694457414457347659287282776331841931402444720733127530448466724581814870395920050551162039329011466026639107316708554684767493634808797556230998042613397709361472243073368803953091813445290478118911408655403836754235194521263378137178721553669086172166860801363038939809558446409915983573818692674084379751337460303722552699660452890626011184257397285219799573401880695875946897389529916810247868256890983671232495075837962151766751219988713482964855692637011808668954498868716397241340872080811623155959741212512104902711738136725015913886597985969790515402574981932544225715649019479186553752962249688884080845186536267712372513036776483944362784894925828993169175191791298520636266566035913832537579628897379207879832860733595359958965751743382815583310147073084243794121611666919174069926007684206581075436672243911776520468309104607509305157405383068419935882558681631384836094818387789245625057442076826683405709585662240212122524004172336428441078076668804858418593139913907255710784988870038653099006938823110804865986702419250279736487983854109687668154150493341042253124176634602757431069668357765062329212156068099095960981075731428086525622754529878123065396403305124149910799195582727941903581006932836377415654249337832521784913408135531990568961745348293099477812236904239531254196067783690823543517714159136811500959626761550829690149060769631070576969372924034987899278664519083513769881373852978494399637930061819479733046867750823358706674135545553690941159992366114938311577938853665345020093889006217987452537569932328682887755923576803846627759982999119047385766161763456290322032461991531631438991910815272793268375900689403046023727342216859718415224686633185245402205750870245750771993079687986201524569443894558905187333917484879324493353252348104956650932739215994397691870138626461191153936732453908942461184348975344423777489159440502525491125663311193561890754870440500194209263463639594755304205442890164952313787575228461707284230989372580279469026090904174423428276252250861720198809365415763475469852510697906294825738883062363110260398795828276272319160663899375475685317773360503104326527935233057317773963750551147541624286502163305434949657352855672158499191468203084469563747328470755973487425663716092411724027643855829693666164891186387644595532551492401224917656072560552281936962053221774237450474189030787910259989592571814821915009107087118351974920512587854127137996796156007424695756089842395870522253756625688701358144361711325357205334351919891329074108814379127879237877215387698591054711685618832480611231576226698718573342925973711057412996686306433502336297592707659741857682159884593283918366521672830290441496609858833539099074918428725917469151007363073967037801841352677433574274821813800835316817679629704398814051485629289104963197925861092639716594257558849583898852510047449202995581186450132709031505260977220943385564090013106155036963481706959476439232343600636165403256322151787465613324603888537084944961781461121227630659921495592191562468055312225586750255457225103441896243677985100630466137927489392692795308040983729666352108210270654448030829212725713721858812902764666923215977137125412713615658690546618724000683205322492960277281695612281096654471428800289489966157426701821388196670183808366424557135147378199799508482548360308384047658485366114776077202207899376796135699546047945576042310119831884939645367555367600525268185268083296866730881165609813887631265638763677206042250438427277620936591383873192306751266121119641873628991096994003626707845855836960728594658542213923438698961325373308250182184654975639478125212002197312517313037089958644370775024477081183526319879332576424315535172053850377140982502174382549302206771684785060437032172587107841222260300405917794041495110758037281193288734120442383253138276471675926519054862030998980000102853252782122934433153129185414172654456239075630760944380761399344729865331637655864186978187991961423884272371374884297115989777049866989260288634552416153371704845590166727967841411075891734409570178225934916071626921139558851389466478737848663754848999072644217291145959379865069891429342458691380060730484186558298185065080149765035754924109590912812205386278059032191209930797480599020951699508564733114620934608724779355469127245548821567077576025411396118536769600608151395332830896957988077696766767465590691770528785145473440438333053583773088287570719619942652648202280452910097778683186688573581291434265999627883191379667086198405579459684326478052029757065379045024471859250874668384125434997729239435616104464081060636543801704355047647015471491310358710211532972186884397844581306878952726597243078483850156008518399539794243823134405721487093624701690807932263598569407841514444045241246389169808003491331993521154748400609759683525131130029017769813537231090967383243737134686197526386264039339387732672973619745315226165906260781369326827727649422778745862804099335057780106013133572845904015796296464112401802545398951263212759143910711699147689361011584398032829983569716902596932823712429175760453989833106190063048926390471128449250795418878949359623810740558051192870126890149857681147764778732690345889106387613548236431684455245630693933251903003515562521811894517333406083465633782715201243940915586578455453939144616869125975188873239186208266337820137837757250552145885577308003910951056266677661392122507788299265907626808040833049853530527136204718578569250802862563012495123828425306518120927357427993931254038635736315825324327557023785261698207743722359756178725232489286563346964718671780840671996305714283543463910531680618723597124929339040876676314429878967775376524156232776222039875739863846063662349595166982601714407664654955810742400477743881425405269706438128209134756633717735880972681324493514410659328562308368723287246905658022385589456788531682654188389541562909293842548074046445525256120586529912531079286086336256463157646052399622388407084841272151550432396367862861331987794609611869868493412891988619419912125258611614899418325019660845450256784917814838009875073895722316615265564124302967550045462504250972026160617666915054964217409693059770714298760912164169229133183989997443685707047813916615693177377749664649883265623497772865755873807829038217311463584127896776759211403039259058246575231099099278676546946092897631700151391378656062042372026925404202086905879708181742892436036457288078228955792468759195388632393251038488923437949668095977653397714617075773838297220039069347356004268400418961383815684844846927286598955599884957489439092459252726405106854413520451298505422696543040583143228063309477035368300304948965607174031982283372086037409250856628695459636451867227121077412368442706315949840468598491524332814026359710978551369884006699559771891781603697069081322027329442753592228140100846760550618327492788468841384252771589718210422365437001808068537819937427635322186861499897376453793892595954157377383104426325817330651719378926978730488976832212866386813139751019079551953771182424743089159460421919436647365519147549422305630830158397225116409138622606595419243920822443672061855590490726111523833983567397585327669154713669432604510337819358732454149035626397917843433472599219474849556923830523899424027371718823910185304057283381360925072900717992191326505630310931333563653245776400821132606342374104442916163541390593709443768178730099499342093178246578742770715032490756319025558570477229879446601051072522084485268252580018917922288520451165225860377366478001792852004213068499913970700233134012749301044058325246369801057511642685229568269877362642809631086709194119064284074115162306617760214854488888660120573431961327377030750119011678859059449736163333627760358068276983489646638332380444828760732034337841323575784630963126615330090425806360281800556759417915831476311196745355109722152187575134835402637060680826778165066461800692777078731147433140207634576156894583024152467884144138331256967505263915409776508565467359614795667998414371124625408712668248212404155272893493508679657262518927092262238078451822494283536986867408577457406430730609995354294778074794162214697748658115767774581291241186450724651091318605720836173644142579826997696484991043380507229897002620176911077740623481256524248208290495312115438052494184130905589933946889857551908680342153875084040324449320340219994416513774433464671127949781627321309495996827399661305824130312283376695490803073922389558032174579174539986644397737366812956251826321162031500224489442665732071625886461063880895421792951531549485270080721539924199327291768991114868633646390685886998727996481951373962598259238646298675439919414547071574620617045136376664750783588321505894506812476755388543637611417487888322893349867610154063430735510736962004502736589151096864937853813485036061776020918415677808600905605674481177413442929012820115986399311998433472666101996618179345839073426491478917354433562140099270852711162625782336581011298081014527405575267002469173669635525378440829606156317586961050856107236238851450699976939567610711559134184335179942667656939701985728191799826057608876213926046249160657134517569719915192605051066762001782213989804016585336787510096487702621081155244305794828466605369534977792190298748877552810504878566619710025666945061606045274032077969000361831174313667443549101065629344254071624814967336889331886820356471157489333260817230722344599604352126250916498001923046102986426906288082878397616867485734604908168237300043277305091506350333628938198420875052001648563853055266424098346264396461073618428766981630475611925199221204473801509549504040574867810042798663975174714895482635230733855450690318303919703840660440979208245569086779994013702130001631663486574019588061441682794347480119465541382279362021271315453415491382206514247460988335806221245628395460007770508910270081542491972020967208806452509250577630942019021685862515791780147761054800507670126321092014285877526483001475733573239022445762640220254981422945168153225248649229623487027781585565739655458449148979984374927783845081201749884222485076166741346379118295518690631789106213941984731990392882233115409518591905515620451406471490532476503445004746088339640652767323905026967884929151765416578382852854893162566238318837295047651359066848420229726447844764563160437278535688992664263460370776115459982657567519374146655769270225694153607706271831311234262429989773498992839056690255687878460401368469027074917503369907883179092189104865410462351261707782329278507010599893871854014617573129248081799085726042129332612586738903695019153749161072795944543181966855345985599612508340468373391356071708717361688883575306013816160241158137867322662473162131109304199949208347859880367259152034324523123711536686651248994503730881646026691347109140611613752765425557471617461624969001222334953934559265996531859264734612520708027444620166551739223249329669122341302725225743206363886847473302152980007667934433020980075450258972477675877482558201430282776958555104218703455782493118168272393157635257559033175806578463022726302151972539038667152747567397068526813851389632241662862028151486068711517993279845672517879185613475097936188511396083559542031296728935241503070067672253948360789603475317996754366156762825688049769376780732429287333774025802087530525962505597104292033026664639123511566288170209663446824036910817954436348025718748222166742258756447955068017232049189902329598052433323194832112629333348608859628930652134334420285486688411567190983792267310335148967286156356368001651463734383504558506070653572115147077735003475046205416622952442312464558502948735374848538675365348424996247843905167801845472116439773254138633862082673666903825872207423076634391354346978890624568086564538461573775193966039696559820489748062994281135719310418734220602544539422450048097500313246619918693917082784680158871564439024594461993552703956632967610788207134173421431849435001309181020070241501950740243395313173965646701284108319905669264617761562420835873185730900029516874650960516355564697109423362233260543696757833471214993679103928125400728366726290105922834206577494483722180923420551162831480173934940417309772681683631707478681255236774165677169099640451125946556273652560382833186059779784527434900779376612139049659126250158090477124194101814233348846979542545032986928615587146561837893280800055091403873890943620768173142381761080474460937767076233958431795789714042767641966241934393291699847174271324009609540247639850211226646024673499603484067225150539257611495243257436036016877935095318907727821456946675607502418257352365064003706681676094312384662481221796661106673624430256210764673399816427382837934326581957745643813414328619275953332456479840482802179474938165619726895953051090624004864892829378685693949132856246333998225657727712592609184923334862024166933795562951069768868865591193224388426118810541128262701790305540445751080714410541184461896674242521823135878990383182561139166600742139042191496789769156240145867605468353555163828628401937651244844996259679096012486824060965472752745967746386916518075869683262557041531656762134962076420748572467101534203470222603365909641701532821776600527648134148615479272399801420482307495554941132388964013529344949511488875910631328211795900391983409649453876743922147364124399633393227246143305150933203133019247404580849282805305065484818404697327645578097789785335119816950094481707877992467554416929247866311786674828695617173096216856912463094692022327655039845451585957883038447567400254122426141648791056922219845406064456493972392275890898713894327124818834437458731879047162227312322137217305942440381851598368744023830282249680768214784506273573323242112000814094273447317473024036454159799245423846555562986102760064208260169156071920171545103221989487492674440267658410220017699120835587929210723200220347218681358135939943691616750636420788576419433159779247373893252585572628892000499405343895122187646091142821270507005257284745592998145112807837379651180303181250575579301913050167368539503690097002610300034536131223528998122250608518746810082956567420589296986793046068589048823226278190871874675239603716296286090939620126155973137770013202030359281116751119973743497382258552361070536979973143841741719301614465930072678538388488498522680830485367361128497064935271185143340500369382586026071918087134137722281962911583780995868039509075250210219105604616998272207261877951077910176099356469037591244439192689451086418348708783165530413291514090534005598506033134371415938874929669862039028140918659563505238179163654971504042544828234336365514721523151973423412351368452297368892844817259932658512994964540048841138098933547055490058818555847720306954302148655421811587094839272525679539525782958484649127313485496643402736269206182052892626114348469762471711721637558539634340881313161111858891964828722721065058253229020519727008621619462935150979403389096918799371348658063624782155190966255671935577207233258221512794070244245794261101594830530831303388644901411195357628410178748845044317812836276808205939959757762901789172069500086801155424398800670383498460340613976920498411906183673468441890074685151012517690474167929794609678961824432339257853715316746512132953842539537079446801811447207710479672010856655988184012877175248506610351512759340915834111899572491938528140110263556983092446416910237924257648607363959953786529534058157207169614588282895068508672660658813080723803148560777416567718396848759664683043900814927445898109324320374865823525673226854947307264351433019944126400547853641887840327329995709407943492022313767802222253369348132205353880541179897862755361087378459192236552352103128373290254799416007141784355290915858711358327548831078383253471964022674525637361945347986807724038091839651637019584610703188555493017122600101409299293516487141219654680725053447046724098251046231678047760931999078039023588276213551955417466218349538271283946502469961420684582355901105322512460352673913699875177826634519613156010352519171219472563270011061494489983533042636436924031580074149422392708906385393778056898159616382190584246264605564663025080101441595621748546963716036926818988792221074636377211901545074929367862395486208694968891697748443200231404811237330525035165314148728642990830519175557466259119011661078954815108220247015285090232512522987289068219150503714427947050279049522538482476701195651077992379941550961858730532804349824156676798795397185037758153025823068426549628849611640675617491071588687079443090054165416231631858723053732241939817428995868191489390238738242502396901678180319241484849227740643708325259986539675925378275802460837420627016167223559313489781900458376220403182624502570073676679314639553571621509764651179834512914287601874413064825066551553066435162299000876218823839497220599189095761335281004503918357655825694793080629949935240238374800047305205117579367331059345479620296429039603820023037088539895564155722459295918968823708684221416724026804150300981777818604369479421243180041219115757965235443646477195465982634972430077119319987424198560282555176258650393608306934914872729317664639047320853834135467098394395339958218240712972889763549817027037938745961535355259045557204483371407640475755650825219611014031196991685477806567768573390048604827948842618645743652487482945614612826905254150416988679179667266740815460167617555309678963615702781444384186972007259857395982944074404531844694515604331764344446943451576311683069600867374051433015259355341126369980544457090563236572929617848294002821738157317843251849343316374221625579388931601299030732022756114504259329420151182422835066334307242166649917291372947299945649068616139392697043753850157517179856753243458770376258459619513833866481588163306051500230516375605827004634416700951989974055944347311324215732296830607734855794634887895311371208612372853692745444209872968476450944621044488382078844154493526211792880164093792387331191273260507770197050883158102948484643318687296550173601385586445679896990884260871810370709658737175048075814104112698114793331816538447748553482667799450526534542655283044113532365058260769110765730892424112461211389317881320863097010039983901787510819150464998427134004471307107099444741358552422977509046741062946161900096086113010989223851652936123162160217809828577951910041315725425044268866034927334051892105250811937957141241042081540241768112205100465522208126117049722566589567257663542152453549004485795126304146846275201589846831982456069697845223106248216489767603931895586109712277792383545720768318674689526186402951316350101505474830484458388415944615735588873839441736537331625374100487626496892536353285751775137616001255683327378522335247096093740002729231665461456559522110307059989234972681140811949644289500623768229854456462034353427175084820450989916936684424851432223967514085099040653259421774844216488691576361148088825956637298170286207885862382548286760130860671175261352268418503884106764454436803217675678509629337994286462009395943295524410730595383125015237499903863792173062245976261161018941181884488067221104446965915297757765692292877247052436492575449468958197429221052989478297548722314900230885591963675967253061784506803567256785268567175219533767875869279340659652269280380158650417393516509392841894318658153896543135026847954179426817523752926960486248582269060118524612113770265144913269304784080071447992787764173950190660429694678490335641336685037676817986500436678124769546138452040272075139257476406896001924854603687906068550563792771810909400502583412559467101801765466919677896718340670565560452937258293167245329012205926109390105102095831723057654724108589292648792439845006515631034486323511728500440976621474682161426896423540701379395236217438299826935802169732110551222061401144495471563568460092239825924284895236528238416505573120226448675754823162481170560955360139149406628921766540507575242450669907701857394308602237885152807559116033295063038203362809407619833390768981715211142088491028198973547757877701375827204999600691865358899531113253858184571804256455806797037654175870512134390154237719415774886012635473159760395377319704707276562014493911553215169020687832572565132109287454317936923404268153220554950531331962083699558897009477937076092058916993014916454302067165210850580255009608647334357108623907007769377924354659916901399691228797576583692797718594539730734714567582498074634313660492314915472991944749012987387667259071088706966652073300594750519388152068575735467825869337513010502131557865185014708376000954993322011309410277938800871851117675027288559845518458368762745900500835921004770170383693076243884790869870067308897594413352602248505405335669851450827379556468238206131827432821473115828128307532637788772190397197058783277291389332520111100796257683224015254162454131650529432680454854725656334016339212822664386110407633914475083863749159135536570995068913261903903801558909016657261792511399754032516858445724711424433339659705002435215534338432556781712538159972451276810290466440188527349793492994926186499773725971382292126144257361500893520732315761521599392056236267941475168033680516748581498648544954111605370207369427351482886266836820805618050913204568621111895386553297751270931732564393385618683934056223892981616950414738359366910313106271354656081507098978238832281984873165942439630919374677160627294184657311630770108925697864541086329237409037387008822506382840171076113189150181569972046551660142637028534135733921085463597863503245713391348289176664661900731226830589027223547192513883221087728290209114102220571760473235425836085403678177825677035303528935834417339672738282147941462464346310458876235776790184161566290288487428004065387965333375295290384944208945927360780391628675666362025428848712555151481939604665140214249286285562309616710183263411473028283515796108703685836644830350627111144855639009272522522728355578140797793501803074697021969119192669889229071244943164677700677954334022768974115879603591636887242163691739067410701271020454700960964216168742879177163515120196902158956753902444908689192313900902993610450984663682435275671214533101137205401759057171549668146414991515485637573085540753056535923342521127561787576776599812104131682964413301935593344867776739359716167589402093728745525822281947865385824443138092202232057742195730656708896384770859319901540715368235712888376915365184944177222842394799077212946951908278094902317261032199167529472808459156517692481459372515469930710646736903835401346671362558613417546336238850659341861512030205442703117636240082634474964204880347093315614833593736978976328592814186561217628258264551590651621860189563735822803687781946170485547691843951128501131363866351422858960195175849511331463451064603053894315375701332796470558559919704482545309279293253009267026807689929635052362827472197395786501910708543169850105156871125764185497529499297979929075703616604369988308011718901344787618102647408758743828349202438444306264622667940810931601265906104682629652610490130392154836573949292154818303139096603660282032608429941445635818424636254048835508471823441419701379842336901988129573632170259449107476277933165280031927705526638105588870555694756729399869926246889385540080261215674452047561105361456029741686769963528550791543027864818887121674988857097442137216283259908978876659872807830459517690604473643892701440371155319455190859538999596304535680080161524441046748724287956474475916984862412887362340889208996071541475306750870436511159374302381078841004912923321718342288084344688159303394847133905981489584852009361641544727566969499478829278774143083460572220552184780799595987032805008305881535971999527315243837910795890667784548483937644808514069179645683439691690772891120301489061451116094955289087712888886508885953827828154962437891438693459866495929428849899829521049089612412860409679299394792192475484602943065520471004984555676722832551788922775837998144692186218994680228170370982246723247390807083971408968110351475497331130197306687639445770903187361354744736938894848108764969304392071858174233294603523895954570888010675901684062744509203057150363893388474488386756158178544596202730806094287407123486531086289753305033575818258225129216201315389974263342762403040113238899409664075490815272571441808124298326084274145221243762464557282095294271331721426900488731508410427984546907649984118427611498995274871659122165285225926474603812981675693158256209980260350643446063736214181190056080613644938892982966618111489067858559150497648688050774682001529358029743009719041746255767262342850630831197288911191611672774847458884874657132928614392906946402030134686306567600712314080442634885479856458043871023238255379847714548736063409266090883467519297210192218546390987646352681896974982742901082516001075754891991529173852185916379746314295438714894319243130903221491590162187485537000234229646232147448028474100237032698550291389693765800697591472542379298544269193135452070403194198980144172781644881473143050913799649942789040232105607505417190762293666942479219951643340848273304596626110502240542348919656493906101386757868348526001914666527144817080237135353949697206214381565982986884333019361124828370644552557623039918843044267089525974195690893811673247095485909995603852682203526127254070512335602989895028150497350209123201875218219139423049922645406074734839832970660003687218676105227921563853561542234214912673795234006375084725149705713885958977773549919919679686752038056032380098917504698827589012300935013897414270274849859762908705687496792885914981065212046601625001204917989605594740452384326664952244906810664285405199848419593687904965612740345989961388598478989433430967718472810869268110855112797222613106074131559027299577071682256807766996631679865861964813025239148141424104844575071462842493222397785975113336884215702669448746054082720714106893687217523633806687405923786013060198668834601782107168527306424003996369413906525617014939261962444480774575153481501856774525035399834049468189804908022469650411754166218746415524194470116267324336574912841181789613689850693916252941070642397192909166547855360015543067452869430449125255751504113381357082450437202850692636474401667974673364093856145927167579959003447546289884207911408860819420222841383328800757486230393229603095770231654825629646504571701210432548296311774076874726637548941696673482601590555512618899559245637241602441046831492485307291848031949411005735201297116700855603207610610594170108798988782778400652207931177485998751832052301861755675810260934524927759719424967460062804377782192967482709170873681960514892379221484701061002155558396678953808413331235037252064076709448659276720755823473410162997574283316197625558173570614296225508766100961698039293021844126994033769793164023220253244017267846788751064682663281304354419262788085749446134486779250845223450130929237992925311295726526040796155949726511201715876965599662938083314180994532815226779544993187131721589320626707996695971034751572623192175968867083986217543821193454156928056706489733494959854277675412282140902702836800361969141291631854914569027957236441927504720381902079235673387770015457764294094877192175961649224195461843730944050943070371936164654277293391098711058612479274404925564630479585982099580579652184236744527148546576605855359908372982127003694158159117319141143150342272573644597377763954549449470705508557794170925737387507852053938106848708398057881293569552621185332513811738325199217660044183752037189343248888607935775789692028850241737261919871997425277058818787171028718223749197042578833791429961200308872188669399684755961436539636755375323250873208776428724681999682400583992819078451215300858534202365999341782266393987913646849361611279353096756562693406648986973448753725375634879462391003575677922644824775833903696718255212185194846053282227262650832656338475894621806893971707384260450591100392268010363562128379581637437544225620407261870049562916935964030518692756028557221973889112911910558182873993976937301752290090669925513435682526716871690677544688467729618416110404015743196961664220160443998820254304767879143810883458231705083950371572584098220238647423616751423406331017105195887094461909167210386631901724042520394239603405803462557666720441962608893304152843622029545602193062566426813162524938271790295143540214337974303698958062777462005239686885172954617952225647464775975752459782950724496766739208650032301905282679039056161011896492763372555722748905858428282426042094956683233384140934962365089613085176342734109886333415761070118462206850303485276749174107318937053329175851837575860364671914895537386168958109563907440075500625302113769744737838280667423561416261648365865728971665137465873106782392729918387011148636442713244547761514033808945862832084780101758789181814854368912295189908023583657673794301615825922255181423709673440998380287904276006341416437450242924988297446099229038984289332997007326363368774653370117097220443815826977553517947451495012026508756102877215644775613656485463691150586928584876958182238630937768827166408595156821712787215386784942880477891747610790164290844219688721812049551022420678092552410488068114910543703279270398734932191984671932386890978092241852898818309128027295390832656932031955578269494211902393069937473749824658631703947946405380965290739143572870338689476497916154169434612068524468877182157376406217045340884104594202469028625550512354445165974830947655682009633612737868836049490647295371923065132436499722691399494694309610428264238738803897388230150888714772450102747533540184406538838377651950477321549999004444015387112744562596825221787064517881263813876377870503089646399857542726944286670178075478849918574710131121835281751125235806938413352843636060892110663223711657776121963242969135005030165484988885925458371076975138488374229635403242415016632337695565291588226882602336538870174629194056921310194414277023108413414240174637798157090838069804568735670973061276183005901331754828470059262356437855109248479004489097475524896022210388309100366381231476965723778756101044548444441515614700126607528852915340595814580682172998778037570687624185709186188653983313716216840840855232507682313964269088865718438067455433266420588104080342169090646142976878945154740056647668392306677925765476660525003467615001675181135930024489454573947280585189292702515702341479217315708627115958690946743203224780586404781044966137471354316910299504696360073258835348773612000984094084221911856773841686956878588984423701974410340187942008056409140721601560068377158268030209422007499457942416084483575945616551212605087213070884224680968237379674838529901353416808617230134710428608824004004818052371003591305373886324865754370478739901514493158578069295263782072441282022763985817821051287401910487664299980295443923223907487717811654160165937134665978380085014015714206680984663526848524898183537846047464903366240044987077381823429375321235326130513585584974931726446451456414453323235683476334802500674299502534472454320387011651311065642541773938234717345164157855251771525589395630116523327846518053916146841401348782359254590872098452894887556860113738034512641255383484068562844125297454534942274336347815336275515302083651618757189735823670993570571517208230086531265040509550986317910865144730839896891626885330804940648793324888033106150927865413674072257200837554317996255665126842325591679304612002115536441037861813682023027775145674110821637112304264152263370414802939948826339273735707722996995241811266501447109920541587481130284378910592188495946745986774171746116469355780471176389806563163373206151844582932953624119620729596395796685359992089465830875509073330097158391131785820881727962856436968893415453368923069678481898518566544413280420171590015067262486724787005065754500481196730789036178523184474454811130424262696515631831798773169899730864664510193107382609386840747077886861399235742225332223159012880304247237005563862219664002160132837120025593541301124627050131474623474170462876968371252640852559124671011520847288200664270515393032993988929857123659971919819582786828469854025954714805899110193107551505877848507225083392858807369369041878379526322382091243991687876340053697320741888014679226249564596869778851410812599087172819538187087020911568840545708659592222722938083746898401186436881711951775825661928144117723299867616384732670355763183846320164997109768124003234546206862468425200634789636592878270618467290092220453427735952545011416619785395376205806274214727441864777644743139561682369413254089967680864058107505356011211597419581642332111668244758341592140052079765831317549372939681551662443836918189361218043889963209339850537250275967755286623224158186736801481451560578367757513362189171553101775297668224237612032339097069416563451166261175011599513724475915613258324419978727768030510343770141247556652844028727112851661841629569346042125262779561301990394853971860202882297941011482265011531524560381766883191738968743359389781850000502616470136854556343519743972891095766971151606839951806296391379774186795382515480508688681914698521445524620043267526149502015332205390766120435255605319310177688262894206432583729128587813542988457179793129932630958100456907636954243960786790656424450442167309521835494592066598963819455262406734686364763257864458369579426839011585469954813622908702718968656177037729175254980831396853064546408460872698160469594598537557714072977936194407972932914771150890069189450675520284955995658626825461991668549433347385381531463713567313697426578305744749593154384017102200711013914473533958419080995612186431386737551155428081493901006966679953828457142458771205375092203805519019853333110348549308152296821358099381868032990509224964925571916062008014227651762120495234753217891437956537997744286021718522840617795362942122794683660243219166027343390802578558116952194973233875467269126275675289348402406848559029455694007338654923102671249933778405761918555878144525210626858507457469631940594745693810429314071795873439638740945203041936988497451418154089869639836008944391100229143882734587566427829018492510826032522560632405566741072384880579092333013106747028359137652425889583916073864794805747408020787822722317142997268396243705412582839309337935607641841490150892216153197940654607906289349200205966400107220281458515532492722100398202052680831952797063376507616736400422901041817292801476131962699065470103842341579728844097511238450405246460985530104687129931509577413096992808221338183994135233092138619099351315965355187870781982468779232730049204066741903455377889064873426233106701705495011729608762061891378945549535890950324296123912392939069180040294574885506122722286345424277911274934387010134051053862143168048662003114139066207345531614937966042842771445735935021232875313158502147477576152912344276253146036974546009711713163688412545773933096633052288623463612610916941289256133094644488341020533946593581973708385757647119360507475721091492352095293096199845140822268240311884727370982660059916243357455726580742018230403742231591303486931322630249066925071069259863476956558108192782329608878168353069298103459247678886701249937387291727366952744178528855307497815304690470283887253637955335832126711057106423597257948254719807916822135187863067287753324044169240551696346533756042980263957626109876466720960199186876210739436589242315949732279611577512942291468590182305759286460313147059528777132687737207570884298002951727812560817594697667528910986303233373406970203028659374891689384347864004185335653335859195426840681197556762171961127488552957746433458918110260295316864793225006069393409771313555317283011465260548951330293548969895878384723450500263729113799750069944438022128671184192029476781742836180766229877363769842084374715735103608531518293163128568656304133503441416968256666098319592999356338273963129913901466902883986904273009200931290348211584024636738381218284839145859429708631300350133527669443569934744496035073294856713183146331149178371439463238967349801184733763802789511658054551784175344820423579405234836738713887478201897644745527511781756838483654335438262137691341455922535694274406359125004330320228706279047237687917762860957845920512347708507482609538900775776842476306392143643852925979927383177933689052862598788650676116928902402241909002118559168635286238941618931941113506049960079236875397938963517391780877048115882742898831267635310370694512559488895984373199693741509314815627273689691086094517083272704928638235951493327201650100178278753134825174952629573188089768772944559252286461037312605537464331204724122228618046167776926825295169387326449497712836461700188646720698171459675466987095254875162820000761915121074496339427287798676690184590358881992099992803365061214066025357032061118236258086682759234069229043866694902382884657294585785137441602412177807309363667887269977577254609980093753819459475304479122876753613161588245097439782528260154385855703429746335779456646866438036775929047108141597753161949496076116649046675609040051350349776147949414729593194530169380012144909717512435342548282694871194471363179628458109972292253558519788366343545947540147521922270272334668721240870691307952971437378456166866390630157340660907774349980516237185644502078749618168679604749291996512054041596513141270384885918931584525306175638844939817153345308730516529906840657062626177727007610169440626883124120005426637934213071025807296839067767629206934765683397490003241247656963793879331073983044199464401556422078412682148427833582723951177095214546359851069716018877023510375496976964821016633756501087906131592228655521984135987878638239994262886321475735672758659938504716479075845747526527561099082509730776178607346435740591667671114740209524228147610630494741275240522576322053274974374281374138513228476392829403521100620898674654824710161311166453737408844097227510035378698950288337453202392092357494285339893697544848820842153127430227252736242147353737170417334612933696509619214527224492020439421094712164316898922324808664889237497891853555617664256616165210767269372005618812289348825411179751160172475132270886979436180563835667124899402452093339556910120695400201023445805245238565641442872259188438970560143709182298990815778919744135322184952274267037677519460239457095517602175544768750807704974835942422793901488396551496393921691801714120066347423905469058914407471874717982656803390325829388740439364453738171379120544362141767276091025219586632578361462372909452846440987050310742406096361053344990917298531872101130727129663123172511480573297074898573228730052352812855822625760493412539574734874219565235745149357796002556853454970923782859193398115860959170947118958846094436074296980601541906997777503270365217739815668662037091639937635479614897845042769062245353384463459768939358066055130960446957222557704882799418050209626399092251736382584793700291110959651475131350412650513071055551083553515981474831989332391005504150884733699613631300259956794985799352266229720732710921049013878443529946764326782877854745514233157665210958402843937683391797002568467019756535874994294246196645106619609468302391364478073874830934685226013093779862188990753314636405224193113411918082232226251571953366907748449282199615903157735520648500926068901178996115047795027743277532057238607005881496905847917941159148730805380417351987950533199129435071553437159434367170195135004063099145318816527384988078349853318770645058254756042267118919460042249723437297612357964436863925908522719539601296143261157200475136388605169928238559042644696838127024554964397240073744221323221408891947104643141118050353840002522608126672199197130075720586705816575202307292700525330135738276629142242946130361456673557043207753783723254137739698371839273522212889930590314593267342395871325822549894072201271862087024130539599170116505910310961858965708854508613587436464611643287188621546274710584706489724600856707372802813210402546725671392953792632111244204369567232579986116325315943471780971682466300983115989601538739782430451764955483961713525537651794122357307390001266033156943350188168430341349800160565480988589282341154518469247916288717857817463275874297753066210483333743946083134781508042299321495440337278907727465226042753446509517788734012817271371123444087475947336388461824679325900864880402465170998864941374633045787849188374486522701672123997190710489984747613889133187568717836463240629808212793880497402561498829509745991769070758063361278761668270218499162725193384096520772461027113789976390138846040311875400541619983841911158438614702723466347183302271044446174486684927471560687771751449969251962036104733618795625352004211487566715136644670027176095824600313818346451455753136979813308530626737752878394931867324902283303159467783007836980491844556349032481695945672012892034431797593327452657305369514841816875865312295362190995549615672876597001095843897659711627882946733689501018136259830376054177287048573955614845658594156608974793107189372591898006012218453122018617240939415840100842506908597669391168861743732826416806526471206681469416296383610529840158821370122831255364208161207369484859678211543377427898363427491575322003755702913373210482664339192566426630451091132907002544307828753092679056619028368622806551787456774818362820838615145157590182769562050684909823437360598327062165587218780405620179518972014128648129358393929559133056907407085942263749492698506274385851974957301821420449447780273039253350472710385270538189260033509863367010860305418974552960998544515261726026260030902115714195021061391347257162263460408670824326968150033971405516966565701094683466409054196865911062695750775234743998001105800789399215719971538913177406744485385260284045842068474146774426929061018509864975110196699171960211303171275984711115577995541172001055141510127494188244331186908397322416317860386051622618687521303294590855187944665806981925611354539527131019651048433498341056780411721405794380157868985016704143105612968989171842661507579942124210872841507396449059158974171077327345116928128126105540879255120135914590051515220038384938290226190014321322176465852133694406160738485453738879431214946511396715035758960209121101287547944007340322261891914508612263776562307864558962736898739119379251729346571201442749539792326865533759021926385969854884238229690521966598705977792432648241429996834976374703136873675468298945319381400852567803513518460376380221610508675165961478539565336161516922380251170368582563747551000703490787384700517559073619962545612360440007944644189782956018517793062457795801117260836069503447848016373905248427116376555514681507399824661293964939770721886098411455227582247616475418167589503622866307608566264223311348676346493859280433719553817010037911038849711238745965128545862240328858269409498742063407387650078211487096454511875755893654093109391478618133989341370313351773777894376203338801697770125075274057171651489464260377557324724339611093694128118621341979684617726486549082927963864793817271881074268379541878102169039574451646441194864715350315012615929961755494019708276087236057094866945476371161284580867377468012785492328831355098184447977667216617603936565233387739599351453762218090374754164536818183158193904826093001726410324306510419859755856822960216295189641537155557680099762255476900825276017788169915077792838218997215185054332280087060714670980204331881589183980099154791168184650550363970322128883925742950666968652061300042707960498691554199385183078932954781106686292978864780432673379945432105182670683181198898986119226455122824102883439534628358837615562833453772223902824350105051968251918447403019352161375327185509759720916330088929490409031889669516710963183910830656641986507102384018765315859836538797030855385215163675711643005836324223121615772446522375344850841596374458445852768101259783455480717817306832579241531641251333145414614771455521484491448878946573414994245795844094059357328596786220730534536583337593142533961667204071829624449626791940684017857506439047068413958961233198237707476229194001065810676487717324553050044253047826097164967775350103737252851293259612523743306824926153056603458991068880464314540852966709735018453856533253603847287295017224373073571712593760479327905199960956323877814072835584011334246766252413348329679653398698322865458484194089702716547186644765729330818812632291695280313403097864200473399847727492091043620020482678036935268609992003181835427685845251876004295653448346182846685394443309273385194815186192034644342156260920347575148748784373529075645381106936783495803726731522910180016366256992489233674633178627421965119998329896288259591867300431942544921056374225731770556938864607815190440659818780911133812279459600518525691623097305252527576039052108532487593072804184170921989297512114844230879360948802111996868872438525073631085214863316275987548807653218041519587468938733994949385724206237512152834230403474654215883364038039053711145884025520827470335462503359883457743376666349629585298699242394653744090598850485042931691426207946473658473975236291504483822632772921864694286201085566572314606865017460437396268160660348414570910765920835755764358142055628572427431483599797138616765030189432667361365207335714442721824210766742898961563620518835918852317787721366378836661241643194912716819437058753198076282132167721810361050812432845715083245319847436555578820544484410035504552407557466962565972367002638999882263416841333542865710563729963940614658749236899872792861635778486030475125894253836972517604832319304701995537692809015180432487569700692007691345025812030792867111181599606762862050156320692868944354685451206442449886286599776751147922866232500968496316209300783799667003291908533226124328469541662129042419037721816019567472332209524373633495328290819311899779455222712511928605513722424120955146877294243640872691891718775839341648662960911288843716349391782597801583161425752452167401045711924158811485591556008563047880185220243546451093764294396645224059147963140501010227213411740281313075825139831305357406470719298555994945272929194754910037416669839984418141132683099298148163821739574817511297456749960818372835480611721289669209942220601258292889525396670620282687159077991503869442204890205009996028715578518712867045712444748540087359022079891977367617394142002580009188951319542822976030030832546431153061979173648792997135301868562516474059647045138255907075387765126844546210602317852452536828671840864406949607167949740875477112550124987128816177728723243896937803024253014011597868754638970271670953211603707666444499982858220353020268171214494690591042027347516019371672377145206612394856836663904726580087354175367718458914030156254774388969431838049631858412370523068801522463172652436739082622190173665368969684885766382374266102441516459396591743077286196581345546723276158403110584656832454409064569644921410031269177310737513469762544412493016105267991858908571096186254351915553997586696216292881538611902028152361398611713858013882262589213575886843036371526688727267977973878474536421411907282900589997038797699333368449802673311186798875386049525228158399529288802587219208040792047869305995206334068872042945450276442282601820705006319814025537505987985592373193257923347653604949012591328672112251716971136036897563413024069541534938543577596162397195483749867730859415502614264080774017874429988421034697579930746562078231840033652874404105320565921104057706418564972675147038034651730228054432239611350676251589100215485884038806200356045004847527286245811721995952093962177585219176624381045426472760096477954545647652544692539448604872617036675630362607049317265619950368579442396131371093826874602137527889763417523308846249122582585854857988467767173216914159506344818253072586606133303024032063674720392824624636119990537241063878395917056790694887256866421399302316005564633455587620929906983971894568141111884025260984941542875751721021413219920239211975391230290902216234260671785436651258613393911841569072462570010782584021080487461446753102605477789734582544426617635855807772064447447745257819473063028257073867505823507797933058447687142774126890775880343843266616997112266041919969658309842628858231118781437810515236709358893938058752161843903044872145448450465170401141230584753999308782964238819961748255838449619961003104880822685174025065788490274763772375777330234134417551419889246559787829081657114670731573405517915675421481077545690412283102859069816033135333280633909301551760341285334938331987791462316328855638161760979266233735542216594700894920464820965322436450722585508811201496707630330032861925783174660804381996704185837818563107354293070324483346178012204222838942939038284567545181773655461624454362515096283236672483355531069618143511818957925182053922534058100481003230661546859055095519079507118321193755885627204289382392828570926383272632787878368940137606587614503405616068317154171425803711769965355759655927586941536384801674656036088688132229684485992653205084653457823282602973600589354823304589455590989749057871716830539405811211832397975132032653790822898541356937918915578736094749570913793141198125273364918256314639224426311549086322804765492268568500058488036998346203901851642644858768147777084861226098141669731382875876689352991452289638239928757846691649257723720299644276713031876998901972093411869244182885922729380610948478448818600932707291044188023552348076013913114391280320745317823697266209057761747539460168961261097564054378976069827626434196632145281589779868384571412516903539258319577645949110784591359426420601523778411491759121100591613797443138945567219286233951638475610441164347859594809506451330703893043272480700430734560171149340325872218353056313065903021505651733010694999281234531540328161514932406765285374859584551034231154118117163673348835461206958647318344504215184826450212294895037657934882087370106335882138599831974693064799063506006025078704716716400129738132654008909310135129019384547316643473881957151600270290785778116538072442378527910550793506172805618510798554779879565170894059769039150166350143368324634404506029195840086919276088598071406456247254476075065109473953250251011174433317922201770155558052201320981471279346067633458699247027215125996791421919520156551679988394591162331679033052051689209099673498648405476607814951231009328030979136567628509693709233462962132865676762968655541856493747582876805163124542602651101249513307971776629583031275958197097221755390155962126827266557615914443667550072553638776436028404582255486414022500272473873479182050047849013114073629261751393895248756856785064474377626595813446643970332609343176711592221316809879517949307029450600875948670684712407468589820939682139720205851868847260406893846694816537883570957131041236687028658748527991554942592675882187106185866063692598814326637827745864127815555365128912122955516038094872446801392031676662975972026819044956320689760675497405204854842787545035548680670038092549111717619084260187399194576104669564602368720629057936207688964809957322728936325850027409411993358715084516570298881733747910268455019947020679877672629102232020477858606832175588413074962719577497822611528927284422716186799840518883105556508218229286441519697415632277220924877375138263187750523277514563233329568871623483343394577791833600745431104407288385918674288470478686595760228093315077295716733487406680832451230924995483976806613381898557577651611201631980178627328983388832521329644770165044061690598353366645067091122251458576146199833151846856604840540976480496763613706992195373897080155213310482757227474561194037129911810948546906864822684503643972724125117780953090964072199186551554987912814228590310957556716395220690289555527998114853658639544681299148158937149925169365958008146901802372459331181175979189446618776211209720552169066442815050772906375708052372162465824740431540220691766710994203406744716090445681363791630896254243362884617693199750479007278324183739529224014603585346114938895000179655024612802800396849870699729069385330560827395555433659918605165864462766291847916394178753935499299182514898177227734375394294234940549039309427609684719230387682333175106016515797914100862354682052531112657327596244574338180210794906291572057347453449325194876325233841610228687627254668244241697094997243636057226640982682549641545431749811248357301425069317689824231551791218638936177643748028868487174289498280844744389466705943318047134927723298278923313499074178680514191859023372463373242953724933896143900499092970505449086748125071012513075782911673246693829264261875485622601334417140741562485488247458901677453317547320208934748831544936046860494460679276068695264375197900882836705959116876130686885497001750111835533994779328983505079684978627307627314406754323464495348892463660301828669270886776110781986937966154170380621221972662557846383368194989449508291290570482643769676547342922517520847002566511769844074745615063095789677408164805331825073751460250865460737170104958834683629511439607530182443009449730747898056806620096725517812398042703085858774349620545566652626748143828052439616827095096581685637808209746815555018653980519347268831116151387190362311707929105310971166891227279186974392999923765328981020749057532619211965119361817729360206159464496093603308089693800791076791146474373196641134010351831828040517356584047645059741242388662611829983828609393228722702740644993482059786718203701918476858893968275245201646404977066699988447888807941260477043690939063961820452403254706083202730866491460728127185913290021691893940126630403130787912886566318914337403852023382521716779411893988541483043064472997804342092833176870821267447271067161090370633986957221898526000353730430334732440647478390483986685549944933318435807466336219079744296074123522330782550068133337768488733736075624037290991625700011563912029397245059770280758205976791654895895737272266953495620241459258874279612783740879800103254510419184499571430843004117801146230750886569801954348782821585777218211069046735888921911405285724177781988563726910812593101507330706732292218740999055873873058584520116376051187857066076762938480545686675554128344294655192713422260926749878779181053566786585011711432084293707382999470407930232008215940349113710624584002508147288485444937516320200391800915506174481575529303885396912180439823844177891575110862138598633871524801107348842286871277929498543376118807611892181335201377305148441367422430123599500164360209428286686309399724147187314287620449002641974338241595908303611671839413895762105335911202848230805992972201527549325962333541653621715705390763815177630557779274390006890529754830283714965143021011670683735524419640089360153997952141028393320271226013523835140486467772547172080443912099156301574721188636543019871630523473744869060570774442540438145230161163823045222472575152768315582235055831644958433458232934871268372875762185295020903967320859207461460320865557593703989142762878420841780335324773372697944105397249920596731445793338595997629635402297812111279821496918126528737422400467139729976537887514530978701438498682980050217352371030075952126988346534747171498682754268119543999991422648918822216087786504254814999043546121414314613473523506315382437650070794801264085648707680764135815637737517482909322181725364841412351006638368874240841925093904752033296261829455207846953457716734380938803093165276957433351785511544622021813744993102186649134022012730532631908379334854535819219739745993582755733821038837691404265831697104044112225183840212542152965650918078677112544415453422187608018816454494775469759016154596203623284757043408647390330188386671492096768888458286745097174899777069858299523572651015218485917625393121862237893468818921545590876242687589647662340039988613129082128136740636684308265546200566009171820775273914061039133192600860656687296295110951009961029381289466598341569106112578751811986533797982697004671811043720166649687400274989900890929085197694421039154175861740240891672591494580499094509560478370990226316848882668109001639835292039873979214475212427250537867711113143967364350804640601869133672258478384014494904115045850379906380950742591870997723658946927245875253393007527167469996766224851562704947249735350635663034544231706628955830724487184010269350213592278621584046404940522877492509920337472446865428987317305178386875567893321622081873266183770073825365439866501036535664496455001829538259200868736275829904258858055340901735865285312498919418424711768431105436229589985974982204671136854212118609189152091146664897049689721970450272014080650278635017672469592996249359178541459817705911791795379409641517738777653469667777695026470329695812286544334383872727897833958416364526459409329856570097727171739736528820396143275851621199532362422964335742619045467238801316599178426218528212892029133853549989954003383765425627663463925174226526586364225656237071336668176598489443822461628889665351414185025915040417327944760718171081578411766762780423782233687190249716101005822725212950068105537027278771783576606418811588668504034413657017208187099653162378676732875810641795594667926155834929505711154159821385846431039791331986759886247244649098754418737411874749687183021534120065221008772794642703001747802429956152264107932756182828280821788465051515698533543555179891036130276938611280980999606417662600611664873220285187922870712073591976964253533813008063117386823481977028985475398577103176019468157343218810467144800846642798758619334055160251782283450183401578724784346266200021825604352681531716472353741207274602440562797143081141610247266826870050709162816543017299244544141299398176269589447719790389939623351331722276748340789547066618669063996881337294570519151297931444406465052436113498435228126506327688731021254836697429695881574421807899440582322736713430776607535522029017053587526790483645784344820718950614792718465711883536140751426765518505913436778746634990440260254388169498653428276432184045158908606723910461281483796065309615513644144596277895356836666410646390566829746897623947064042987588809327341756112358643246854753040977105342900983358702307816707571708602683168679183934815487369126715070988841803793225329486540518735398604504938868758237433726911108027146695976443103285396868136354093505111808094293361449469811849239267014387407810685555218594653233751026264479318990742803728518250989731804723998938463139177195542512004255300005970961724479345801646122498142759573022770978083758466534298493624897844254688345123585368022592024513780180682901989279786564795756165443064275640511101804991679433089208020888814786960040845386540174218414274781458483433797190537197945864472049247362613619061582754083102285128178136223262230172370414760027946582023327490866955607240859518630632835911409854391397079433667931999449983584209472753062952476685540178904825977507700171674329363266744999234319296330426843408534762945085766773374804286570551740681831817316145539642522426781786003418460952912856851563641472693621870002150251937306269929200610733923269054352399644589532784263110060374766124581225773377113002941853403011290633884997917898204525798422690580625835479384843523546435315854605024434906477367181256823850389765857883845935225076251527293823560822964568734251282857108189753206974630802031634255877702566094156594146062123216999805587976853183974097021277522556439875301056432906305122620555629337047692164162702392624297830164056727033399942983656859336222206045588183185875315327564958429250679476685703467420864157125103503109753403355841651091892730194682714340622670467307182140195592339278870510941165254322630054884828083281654856191074633352611058428294540791211354488329006405392881990168193275250955509375794665333128468014237449001050465135723729669602184839423283340358754794190145033114094697935437691799808307465195153369167010200719278376248673342075419903298816522223510319144952090264884448072209505668719653689485959939802943028057386581006165717013014062913636940792635984625297138242795714215523221515755012478787446118574748431490574257826565659783973420037282037745432338747467994454430868792454789875237377076063781026558719201091419077471290065560072586634321852074799009052324377352037117298291951875496018564346084942670018810799303477330127962575275043088667211710046724311103339790729469359055207251487072332290678651925204809524493807641223718937734424711063786289662963153212134350904973839285221831746782308372266639059382850747113287147910444855499579254208458003328421500917384230363690597033717061457313894574853556094412355623381126545836469079161782845117054581025778323329317615235011962077699989105418702619746951493581832058577130362874113493217671988234406699760206904714572398538062219109514463806508254001757230585400009194216847958774875832157814613635935963821590721166051983605907605810081984140816629137921001575945108825356068104488848026556957071772149855529689812386327671185806382686746419627168958651412155362366449800965115384534903656933913075065211127692533945813668628457434029528948475069597529485998246857684035242260784867835622948419445471467256599406152418965242728706374701472898746086879458842328027090131658611582382136319042898822616537128532214140729813206915269189603255335124277133103172385267943473124761022475843539895010652441714450856080890738932407938004265214927378887411039582092173338546713916454406229208884735156129838150066879383943041722901681830661848145151509238688062475370631326255748313371506348316244163825010418215113371415849337941105209907726788273767209102443532541509786449824515743290425625226904807934870827136837260573968066115297938442714816720543478124464912463397625870876435258704990619278962381479678857817167163237867361737503172641205028979529231786219790814443673234297031738524746842450576282644597140123328275217481626309835520928722064404816103217899263665923600519262774823249265547583079676575213675142667161393436759731333791468891022798174470675382745394360085835872018826106352558566361491329836274758668423421443692711422638588626601779825149055220845514998257039545064339077067373608875855989349527476927693647631948339388227493746518372223853655706706257952033630622650702893971764462656841439797592129249693686517699509344573656554824668764831701919575463328656398350465099471394929961566119430647080062429709836333928486770699246281155651103318328362026990648806740548038553003637792947016042638240196819647560732253968890176598616899126755935111854639601890252519554591254150400581000457531732471961010902459675962914835187267854204728566400279434716432952995575226104937182081337232300714092767079745832620858332853848088890281959035704950843863595100483452079603881783237077737466885608143607658349335456067462156229995336847708607941893843099177138036452343009130239532671581370388122102877413789654459949250084604490849862196864575409765853037425804353851673204864857012591659546555599130665628219361245832613796593221984041578168798545664894003077554735337659090302214409322405003386865059139508816011683830423609340428080046539665581806909404492552465945679906567706775594305084026767850812936548925387282258655846601327890727011446410809301372308595238081150291048883463503817905723884463260121696069480004770861429284452549539047016044218759830303080209165721054303486318676256843155834132634599692025546273318972180170497257636740761316002863736959988634524530739311371219481044587070011426200767517990912595567322192606203653951446364188431956662592437806966715182292320487578911009526670840306884987101036689137919306020565803455728458404427354531346449550679585163616147737783815859693871610037772262018333468097262574649182856529361161354902169349343806214756584377990963183626012615968266223787288854895473301447884500094762000283957786787966663697535193386014972861066243787901424050792191670671045403578143037827635340805403086162079287655737641373234657555225399041465960764894843036532787596344174540621453612856976057458353714114054726869386894614516632488199242419043333726966312667470430460156392127943563708827485233781019518538256080954813658897580372123749708038398112585459240703248157300793340474621898476487670864975368323492834812107064494735589835212107201523758415465842047714083054359376782631192633124022490739614737909293705186385973796448524554298478846796913203384251023293609251236952043577961706978015794205728335143504166984253807620746847530171050063642999509681895385046493851609527981758547926599627383562881189422194173534761344526999331441546191488861154964154080618484070148090028879258781974313951557262882442309327790998512997306706690533631007199009337803683641658231754413248216181939393295178186933020764424369564238111157168824892796132173409886141038965292683707435301228719233741136112341918300784888487111489949600604475973563881211046012373740343870635770764263760056098263923542893568333249785133302926286987290269788384001062267209719975349204757464620446347435017947226723163011165666286897278482149488394114988212502917656493768267114268571193297158945793489616485379819992180951189858442011524143027244481359126054713992284875299302158877525956627375507478128276678625525515639807281009249809707890594605227335966163673522951119513453538900136579258885554447990411882342072456377881605670170042510283865710523111259326254749055368624565620996175537808614742877935336586317352398079868566410891971183034993547140167493008536712878976734627106693516748003661430703376358931881485531431317104216556177879641910353922182043140547661835836367386592439423297791989821247438036039799741785609075870662427796929573134782917538926782010120322128114365992333757772330026307894902620679933575940082515959666010185979065655405639392915446037328322019851462775183905381663205236725291623646237025213109824369621252489738890816146561389435295278270167753095146763122266683591055872461234709419478387962249944741518732898253243854968063561506031675770668620665712562671197402706350454424182468497654584364722269820900667451640861732714526933949631536490017479670697822382344997485469534288505097563544551900326778185721874388870890067126715785203150620889479626136831752893917461315097983081991673060498932277843998741136886606040269711579333728777931617633910051199865299400996520738272232665113855374132768847789806216733183584901935528007269287323694878593172548509496633417551163391093978052155274877731566830843389876703135258107440958415176549371017170791299341141551503982099667609681989618082035497272257218316442741032144247708513446184871150327526186673435865344686575938948221750250442960302216969129156573074191230779967578360392783963720678080277144248532769656629949775313226690953477172906483592162820621924753670395873324010975896119700244189148950722859971487283925663206675493534079003667977726992266368038695891217843885560258640309125156699451188057356442281327737548918017930784548116984639618798209192372952404597282090201220780543764094191721402914206321165068911119773995671197497348265370945375642278169537934508282876113245225412584088206697526200197163089263846217284966804445503811966946771943004901590272464799095887475696199077839513437358376854433236569294954304502788872539264857005129479767035272275899604381152205792376339875742775682964530238208530819816267016228782505808667200969036132688200021211532673686865275482126437274893415349344917058998548292284133136354533621230830402297652400876023848933285204312255791749709117036901621071616482492631874249933918452589493222113666353327104056512663936836845152140679035092879970821321238117660439634185917242866490476070630410512253583073730906936565855915840990653713104350558394615598563318216452373470423223611205407317263249785363581728248747869137711889354152096049585614510076031341812563600890290377171380444748225430002045185435861347960506355792802244730226820055578179093197845435972840565079605176328805760270309266684578432404220814854509381700805906925251768690934872659348465359574649867336705147407947987377723449114788349421734773165816108520013475531731820307764811883251216997865015581196782804523985761085889180332854953977120401526480883859978852386129736885205274007268665558455578963560739625764418297616767171957087245134724565970082887167627959284592599435837903427645664332112348744146802200709929311796737281913491922263456550061825648814962605208083116930720378387412060139222866775747268344867844968167695808267368602366766918227374018759863844588704771679552563780277959329226028827739836383849677659667307470613626845412599021140666092493518753667522753525499196048480329304122119655008210033772538680917849347100646457815312975004052872646844534480488033432502464416126275509961028583455549784465355705913123381519710387236093778691306549702086379528095932115346837125181240506104140339446765180103791639479613082061009978191954754640475134556203769018918594585036714750402869524895481708645334952020242871552601741342999202208665068217037006198014663127964027050967152098971772333799667797645884891442237997208257878505714577592399753135864034831554701983103717041134608718737964687754348272199989349582937087383227551518865579990416601072069465182394836428008025748706036378243630946243111676675108477326531376645001561932413462439370820893095518271377625858134830575714219195145215719026887547326657713341069432282493966320358392695735138246293973727141891413879531363801995397395872352940277936734070947418043862533264006893913609602065895830017220202032543682574248731323308219273031950362161152183533384069308563758321095858474931524580512546325006083723548937671247648192340639156359707565016797421453346749071346291309304339509053236906503511104498908032242585557403123896074938820763774431007796472932946470786090895562544838149099115751984379314601475738608420941711858309325414259617161391763216940809688690711688255440175512419609640233818683375873232521186655280863939411763763373547762146314869037160788258639957086399703211077120798329904804135282592707474569196704566871592493053284343293365980947514925272098419434687411526328437338019615784707442053148299648169615328389656528920744901718320243542151541119459282962853427248448489269451322387004560195590401062729030542597837808836154803970069536134755636301701176944350247160007896656500185805572186582143028506473420436544205985512188738411712760834279632996492606461196366216795234956521569977863646310160077653366099985621240164410759755858264444958635354247242181851732339975123081142926128158204813652320093864809149148101302894886734566270131359154697948820381550886257677299407788559890870434412751328507708176290154369560218436112823042654143060485103826847440748230267731854515473879432269321160321773765443811036714309504743633467830353605694912935376393166172811018678281244666639132207204204603251918777057150511397857112258433207145906738095581531932432009332960239685467690521369035419151300898757537241430776795409374367127699119279022948488561398858077799615244378700176239988874790709784473705304181978283465862088207034936643856782920231874766773531371215717442906265377864290358958522072068196286025278869899041511410213265054218630276694206376186195924112279083845541787341185247662227977012252922074346539626445169044366418560026672798924686987478398617169670921646127932754341071735254041543469920053756169086939610302779798608406100485225954393143442807279487154211791852583766234404006260109586938138578858587894698719238193865321700083703105050152813203724936166425322956768160976069332030953312400990209909403451413137308676412189631179669983354917261556551334918052290665350886102059187768788761513662803169190331314389532079623862495268499465923889882128406585403087206629967300101501062520550813538918709547364972104476454169382208749140136322172005163835126549575658886854485110003395367891384938942391446343325677959832530797604185528597660747327181037747641753089983161210386927309923783066172935525891447716100901820039058045123923406315738155481785916230632844536748780088378866695558606041541920739343476114400606160305995330802129620297696081139457811208346022600509153229968976066245777623861904180006850708606087877711884165430206351598915813237883565325309211131157405448700587032959086308407701498778875227005107633373556924675545822979784743055818146181198338440989744956969522149741355853695792244228301235098116858542321528545904968095710468890894893820815253478315424230716314327598425480382180874073910630914575879114149254732359475161537749183730129257280834379721440797910441488933013369961136277085681622326053502950319689932263398569300311148547990534716658328043335130132622119856151190466441421914244769828218699753187698942149365682570351550945950540522811751212805978037956703467399194843279111607038568141803389582645610124985921421710239536434323895140014726708507019099996244694646681316693978038499743689571348051966141868122466776096390284799354861818587051225176705132876306589558805497709303738726154894178838876163180740608491405376478583797620543885639210309233516327280549225305758777342863406476987069529752031290165726813958322543035119914668753586459937215117679490178581996675980069347191728306029279708508059914517088199911467942065374084554830970845472785065994878906871948256226587523528138431588118148528141067085150050432365487529760750720823594154076164383502204645616351290538090512856882298356194794587820262904438881652338843607518562457071559349153521398852175546472991714574221120602913886688506750141642371980525816558960353926506390536632919109630405831379494844585194892959013792756105004637318338487747793696112637332740973115983254104649768650153753658080268799750560959790762899065300239323098496767618228170789915258622660866857903786430214474696604218058989406438905069516586695490077175682507332632226103356569756062040011087609459833991014316626660738589937278290136367357448512034664562954248268404002708946875189068654477955697077709635143887350096265328064337712349975045250882282516176951206985099548421810864106700544012485681825406332475199586235153496230899705528643161681590980026259393414023832728422192469672471419584639974756038327128073402921741632472684565305425329738733891226688862684267423010214253710087834420665089846108568611581029902153336414083757069972024583072828543957538732435182882807486209251362441116664775459055617799179347151219233594913562714718846416842510538589391853142061983296224155305226533089078551301062641150611381441451327610793020473456923275649179699849982669829792127392853045125271832047496878660888311027516072353842069502732218449455580320239747333042640646290294799857434331958961006199065125567913780723350716233110804862950652529629166995664723008181468630105782363585389242916443504871255894713994339491699440517777491685384093607620978014621344371619099738599250674410383773857372909623037825525231467884614511466609132140316307696534543805066521924554729279409985562082217439697487746157353862666404969216018028840670593214874020513096407532555841917510638966989595818557344605426352486409503934163730908444702188324568617646765634580181372753637084115673936195660460443924544755160420523558129540484828080579753091218421183023616825229765029413894572628090537173464914391312014801008932167342194660153912292889948163876513294863513865293096555349949906235996300037182117026924435001741868791924215493816128665218931645330865996239661354102496141421428989984106424597988029681644118035971685740287803106764126161298638320705415436170995695706562076771922348298941763592439658250251531427437564600296737317964157480753892453213048069854662178383705192044559968279107150751261713513139894264853460325069394351415559766217102813140422931830454046182560593936179848270630069211651361202060139403656626637397941330603429917904056840555165269497683183743549127300926125278414738478458975844308874284744572984889693387488806982905177822913543192374521791442708476289340503668652525417253602967595636502946405474810922684099132312701908825026110997143411117801607927456973533508499855135214732708560742493144243049731893872152251744905457443267045837220902894494392587016125394835440190297418418015713803249421760773334349404483540448639774964575327620703091275586650258952882574209521170621599561171832988501876802966411785629816022386442275340280572798611614301516314969375813810396772634073077499090194138431423854990580206396148902651257141512682206273742993970991206485142599235362206685994835688977643841090922797073593360980869141702451985377990059425439041495591302630775318733873180182962291140404459084803107008569937313426751661675371463880790501267432545122399660139758639190728609486889799573227953770275636935840833491585637462535318908238267902775563583083023874173081459911952428668702711444349501830638597241013069825636344909346151516228471768692995121440048162047818236332262705700785559072046064081501957226010650973890971230343538323032454214584037482341623401920320011237190244190434735589312805037627095333557371243098166120940404746483959466915440832004952388253457383852165933799652990702760122183691755478619958777911566569809251092298543422750617634202611009137530944542151710651462096680125575191122963430143533153000999980471803697199166149284292196834313828262187501089726755351926665045089207465518065443565609055228423478225495113185093817871832865033534284637820920317390319522042425533699453080197931393969412035412447374851408172088366221139486883118991415344594807098148159077257864323799687562522701248725574148708819537801828542860295322042567082925203102484958270612761683971837313041316966510591346419410203757537569744209910459005208793902611197186848096319116548026709260975617588253461765006708827995473458463608957163716056547294687267412103899570059842060893836526191917667572677874454999264233020486419157114409292887270528467084983873364819384847438533141383626849740075446992156859428974807020389951756657547951603158957708075075712422383101358066646333230930941031700472444456830534769240508440984013574291995523913198718466651446074412523859910686239612189465457403431152612305705276273610546221824056434042088966907586629470063361203949526701121267620046030745775822077767750319960472329348691021640511645456720941791859197658628701100705704775972923603138449320399613258288242592488943131440843303587572996755435728481085450634623260332864613952054790921400224960470756425129287507135538546114103147988272172699032376453155115086583430124644596592549015994843564911038177312194071850789669598173709248320759612957948474285455213807154011536601979767330401226967060636866673566428213396478062284068569833753111268820427113235919346602982454860006088162985208434698333900329963495345907990886432926299327406120267660647603252426344009769245874292399967969817977120090272391928939000375974906576114722478736785626317602086007069515741763077990083201897094797097999660099230447270714689662339207193375390967132922546352814989693262704335842705417087641149268087207001638113670927233205440527399672688795570898875245703514545340098015431531896090258013212190271991341646302450163576511902421085353348835393639823671352905392651636687287650128106950042365015877274124819567504085607542291072501998933469755957109180210917046876148820786792436832765743873119606202270056185879073268219700521147225056148570550323071279790029071482305211934297471077731681603476880907580859603797910016963824496652241101005666661059593402380349170153089766815610402072614698353280562787671227091631638676424762886842632661130140264137177074397973201450053228162316036655942267674596563497549714477792923990572153714147798905558694458766225405190839140077102815462772657939735974610058272930494524832386294210493146790458722603595186809857617005890404937024252168960058978349597383056088579628758961834241179115708824769353007023026616677118438839151869316294929136359574196089540458053107066808834335571558894086012070928112910250469499425625733031374643693561190853507874192356698988973877137726082865746797650101565930316853750430941718683465913615665723245931900726016480088907824216893985008790055287648436114912894588738382546058453435561370582277503575171376945958720544018989918812923906633670111827317440568938847498147776064489979802511619744415769727781281690405231455786352421366614225077803094360099967123671247808584143285629959266434061904454448750917324629394462732074785359878611750040241942018872262747304720850075019677379746813777925228841059610090133474810521263458858922540691926998760589291552209497920597262171246500299990455578322266111593246363390058982325214722060071979235062655607369281011175416101975026326641847441188951170484146313315819072267970698927897162480714822437286031514292367288714025557110632175674104461493531078375321356867903289968073503799143279331780084497851705199581378061500230639044587720772305782093859741392808655620699568970029549561917867486852291758654173558727366392472915979178848770362287262398264508818567093773837718316260428063665083662283837256749959532477961969830510511010785678812627123305600812648218145547513610228317886475942021977254097630163623235988878510340187919167776836812183472283512930232210209838929580848173028427077187124738488442246383393618286762087506331970174825485384921072906194185126354047068793302551837429212873550063975964627742634182464191738260265045875638076088946461721863486680589682627339052792133513278237919295164898894189526137009898457497801315226712682496944919525079459687527064260821005685489604032634292540579690178287621119689463687938738711207614644246147024858146056589411512977047276007683356349183430961303574681194434020842578249288141132789023001312748338253592146579939212378080661901791808912867626413402991066490161614603184347327663881091190969452074234746630439620200429683060550648432324181614693776048722913007899765719965502662726221380222252198216796488574064099668321412229388132987310530801060863573602516868933215876046832270003835704919032312235079810714444474477676358034777415898150879019906586835621066980382239321554767239052919706411638923019268790547431363787633895398256291139850655511217495636843495105210572168397148530659599942764889687006454805550935067071174162841185733236534204763588196102024726333262415236891357856036648886561145802151994192585882260806208476138114320039627959441285921917403633038832538164209262504961120361790830393288827543419090610163998660880952901094831011581551189005294342966616994894828917533383170381409212040787107782784830273170099179922166024315234256602923308741049977122231090801523437994240266204276315311301833541255958719530293554509727249131418649163412158356734936561224734530390208648592224417670009899186774986709834554828948608182351927128367308065456731466374396809402885367215050533579466887523767615630534568634763068572580972920503730703732826602575789032980720708154627073642124362848700845831856145388515427464953570878144062230577944823997942005725175996418290216801087518786586377701965762061657462507500305836706937987276191539752859706783227888384068773271345273077211953855216712904095776068377642235786746982786469826213992267216301740559910029028073976536140764543243846048197886064566866750668918172090190002245685260565014657004184536089753162137875775991155851717299852769416803935617069437965944689622385302647273499033607103383689729945134163493945540684030779183206411762058907203049260433300664720691468628109815345141806710019222111871830583302529565337804597427034488922796998788940974321632412211966282361828126969569308462744148525886183114918479659380109372549786020367261472158007798813777615182625662104502478331134050518740740482852747725745499881632508787715991159228736841934317204727939094966728388747063770611932150388107283628341513481057930412375779964786838583306181414107880601718907925427657949199098505958775433502159850670261769940297833471551836811552301553270052259337462809514023250878352902983872256684127304553023450220499928412495365545017569635754841322136797504423071371311106760194553770104172058793146304851491489689848245564879998928645209780741373662095420735650695693375751140201791264789744625498844963621632066058574109713576511766344337730553743543383104919537343520848376647897020412962690958151841910828842971479803900255244476595256459112970565034321039290095073907276908053352536470610303062946081802485819600014991507689871328822900686095478894665898680124638086299020722567540636953716046183234647235768518180845532921799132502550091660196235276817660996023686778550487069084856228220497057596683221080833699133092710274556151204970447160586687192128074946116217783813455145441434250931112362455991001730553733610953230367422688134112044805255145203702011811011343173578865491674933184356359053372795258020895367159069860550181314449846214509064811847081405890760184563624296846992876397657981142621345679197212292225108781929431785859098680624243886900578995659229950682871940276870922199653559864915069116114389294865861111094592189851275096482263683066803105173049292615473446000609270701067036498280015370240005385250349099679388268633868392453124826682930951302149382048431509794351721210554176241742287182154734326717244984604301411262916311264829785864873923742438819818684113704228095832642052604455557121179354768830210131218113015943147693653928283899944998072698453619216416282871826013954386567079969085405279333884711117828671912891757205137722561156173100494626603375423210579254124919740876002382090417701775684965643868992282559170284609848671933969338085707715589900293004582097721043090266878110903856343567373496300894111536242409999126541032767967626424226641804205362245237682334903286270284970943791573165710438325694793572630606840368076056784685197129874110818880971745330011086774081817997981495290224293529490562300046650567285062788346038160172999073717124784742904907107507093393757551959582984857338945859989150371236184981479510943450512193219060619877290920508332453342797432090247248589967742659322591875502211441077770364291313265565205274088683092129707338171473895008161931401729049874419902691192956452521649468737948570909103630890455264675051100551696992673592970860089493965000267867176401711725054778988480277963037276782262611060851718503953704308246179421975577637050792554220844892227890870118922801765260678125466336635095614175386837789192708299343696151049156923456325795550674758107995443268188916728797443765512221092185829994118567344849854602118790223968877518628841244892478905768004562043893637451601343599982255672032008921077211299772388331604798600756829726879211815127460297523083382798488726393742287544928538727944089392302389946273695550435289814639166692177341060014093015563208985515093566218761588311188962684209501730184643683497813013415171780599415394356825345460594551544242281910777926447675553590453788074906382598077324972458976189111950343316243489728691727010522011522635735938411309850861271936298417739303768698035463883681015523501018096054690682125120114945978256196221159553019051426144111927396349358744727849461425457948931449733819600675531464352581919938331335661337354895785836152181061735905179532838221986025547347612045887133116518907243121231622375415148645037568128250861440097990790125630051595498805372778985991276595803386053852572405963532452053314550284882676569369782538615019697451372250734535701318613959761514081444677440195914809478050610059222967957447485650062599151978631119189657045561422743567047103306341655384214861954926187597865918641206707527669388446628795168373689652778951203460292625746674525889635753817416006680124576769088175314290253454102986354338857343238790823799255285041709000366188408371455197370766821695994390446141872902369714528584971257086247632944785928303970089704357313796213432757371589668799688454326849525590615113908407969051707306390186288150704146257700403681245209950498352052364633303700940833673414648895589334716438312669439578356599177591068054936710197277211647705463320561140162334901279923438016310513748384989392806024863949287389115755721775114944780510527199243805206855508089974999939432332725451817159867564389870734362062574797013709764718928550980743742116242226272783195463117294686806095767075125836718742695167542550670156159571856698517575314821192108687793701839875592653362194979411232352262696204293713125402132912678739193390310106610927381844887069366351463476400033456826040691509215329071452103260933874943569729468357228835127053342528087877878545151857700751888729651702850929552746563575477165116699715502264776623432590357568396689080315836471050092922222904202517225890512583649664696665215188018956279210778471824564918474231097438340415136111959948611356336148317743572009763890775208141581088371379656276226455989690880260244508094977097684638140235461929916487642981404915633297035824036217041125414850377623207798418749405400936706857597118196417870469412242711914928025871124642237901741591998050314265873599318390503389063143024034937489393139749752422295943357652895234164513169188453726712274074105806259169670754417701111587191757161330838215476156909833318093734322004011601015458813650624765759929036338032046717527522910732989812377140041006760442037609194451777765186498877098540209045848788530856662850700617735870777717098597679608901774309275847704813457567812027405306368890301065529819136073191762842310123575259720395773127927965340339028332458112122577879743398777441159118687650963504677961765122257738529474536397745458542733263650367335446808791937572400505282850764665311295706397025592221567367309839883546749835076219071241198071186629714606898759869326357567285795051696589373741333477961083476965569129794353499952258971408812433101139457792853835040210876908502752674303741836781028143971711821286107552891972886597482975594905597784476131071392613205045658868346941746651782329506628921327246910477869090084762002152655779308846162519116868080667279939824975349386705400571102548235992054149803401560032997464178939795168095763298005592115561782527119581441514866838210885681267667493012112310943398546645445313190878578017763853506149651927940992424841721607701162600742348579142238564133298599479727432469951919657081209808504637310973209749069250103828190401433318648872334522904850996696702053103474223383608991666766403099661098183908503733057031272509998784435978102198122055968700186762414400757341057754479570674099798795299158623179874271357474993444904169834825762442301947763163429567367526842845191589846679295206777892072131043010924778170141124794430683005936461152154267666958664534118719469115356805191994864267311469970571327524801792175671881419227605160314305512457251289134576911845591931895671352198797728391578088961999739675605477651031303048435479216775678886718781363383198932370725552618249317682868316975212986035047130861124157905236162689245721065252257251227774288761412064620246966136155458436921829270942796825063759130887252775348031360656695803271127576225245718937684117074285846870525412700463871237575201411738274896906529744657840465690406432159896061168203917865448532683331558334016671534662495942634724654422718921580984238353589437015889345446049676257901797753129285250173893146204774902166231769556496142723095686735628891215174889979404669225431055900415846405547575550720655948568109518972432365337611654009207773004157200057942788617380152807157645860022436173335002215745543121697559383788561590002997853562260593960043256856167587609900208058998992597546411723397279817100189746339281971926371660807210235947923568218978853419593869744626223083129939721976764778392811764492345791248311638025054873848373580914210306997057510071567038094236973020587593096443909188723602133468224665193865838512690698754772250717686628395845949254841171642745499352073130744824107297127677560326095589580176826257637974930065443580713498776062456810258548886667463144969326827090293466728523152194772605406521257894106113008204504589094978908948284447752924054643439449342198858902688525150253431774127136094789442793040683557647187578905246129581658431703908880960384816406101793128822262801241017386542609890904891885810981480103395204137899468914134965475819091363972513797845666983116607677685900767514362183286084822270623057150120429308800588571345022507293839055148030442809800929821873066162748410033247598484428900174730977476485900748738389126500296006683905340717772776259335151642378333234030006071750874147713407792458833698362707139418245159935273443288853819523220221639188543413872299711421249886778883873445808035761538120695655156194273869270389861568003536351181848015174115930650424472590384256420150636188064492082570066755282082514624000664949875496674351398520925352360130993752004411222604754823712604050543489235325010621436569299239361787594010377428121020033304734409396078953059547460184885943140442049296367789918594654587971546502344893383053579134450708556331679863304534066480655690638269417558385602947590937730155513951805846236297012687739996537900429355165947363764312468152286169134195330558376551095747678781493433774865533999548307282782349476553921484576450837858277650459683565954566772314230302252841467919972417341742735416328538936601506557753217447051555035724405172352342338465790315350716069311796395744263316031366613862453753384665960647450057556083783388800856454247403303891380328453689983797432788943417229145939223510898057554168433578523167566324750762153413307631095544171942153010464342514939963366191918838427543983926144205046545053941297831500050816211652116234028878812753405076711963890037803565593381102218551478373027841337896555842550737863908099682166497155750988772308970671421134447774392301187843279526960210830511781699659493641517693601048249282938617560221629556115721688296979312978238795242630725407848700828530038080085600145873773739027265612792551074168226005039257091491659573616478212327042454140994403939439077535772276071279438436377280062048029613950531662295484502364038855468625558793510842423918397733816531750291137147964019063167826659567042420774355829343253171877768478619539820436684485509375009468778746701610214971126873767448710419335684589419384018462656838766923195060342456489074738837804787150231824011673140316522482985687303344776858374042988212641368201655005828049850036727436287638511452368797081467608032965738935045768627094278104314066166210800399585364003399477679322213119569390307886716108500616464560884944569283789413087295122098640198804716391364040869420690048088142513100317075292976281501277362306978492200443788709895124316416273264401507867785824936224278873645608245821636344436841785762329069490959196036056958514889437937715997612238152069516780234571747850594493720068516692016661749478665903510918574809512631439615546941740180578394466428798606456049280192123517728547004220353538984653690721759192121558207337168646681048304780122553954544123400175692078800217521647735094029891735175641578325669015429527134784515216318246973693478282797807944157385923601163166248655943699778235289011754695774240887497244778840921566674016021345538561915583058276464361247744645564459736255202756131956316398673385579107287603878713155307595241699240763041277683421465324400836913883042988148308123825600589073121111650809123736353497064990436718372554667734770363683559201684149155796359774412988042850542962627120450256985443956378878463296107994852867809713667238941815985946281427679213147213632790596489788800513884553734800339941168368662068709217397807625131464775619642464699363995599378760111464653318330485173548862366907958886062164029932255086229175164271804754460742954227069469346681817949499902528436507086689619946972672750565261066812266285217501281092441990074271508202497650211553715413145847212457022931255421846216654604335132904523646302221250494086477836015349950103149794530701340458087697571082345782165766627966326628277702491348261249620494105125843875770036018755867149055039842083231497743584109450222028094149626815303374485969163775831384533016443195545213064973411028106320475671485978826997568817956388588502531996804431878758065136911671181659754965774572445442745216662384144603768017913132739037160774574986733815856190894287376293295025404590707890984211591772934688102200490471058655547317669471462730472693362985937747675878041653387491345034472037672454754563534930522416465155144850000848208704857379425344638722346870092513317899153662132569163343483407675237645458306451867819179829523030220344862955814447677049128295583824677916946642396841211173683311554819207496020353049507845726017039346870658247709659326157137059281464423110595440319080538247563474551239217375679022201557274702174607193776001965907573487767577957175249165553852926538235582186362899592494303992137548674193891550726271279375432264580857263637687346620189071297310573271278457995760262295511957288512645083739389944442803245002390034567442260557138003636737583911117552649678724628469050338399233678301828494741416937376965093803082709859900176667740412270969220734359512195621895113239515401535804184235454747550007136812880727597638970370165614249263144461401652950628361911168656762510202538602072333883395340088849512036149317495726299353105588076722867439921427912198178381710154048159235954764680011294610020711438736610318818360797053850167210074479992706611025375741319400594102757003039189477548530474706858824390552241090295298024813957222383328195357193063268002669617664917664737291051399938280545747193718352761774838774115932303129568888887131034732521591020180923259772633685870320647627768353441797452362063038628162496155488111854263642548489749023652139315232957917609192811375493546550220082252992635253138339050143922488452702688252625499108296858032782797707463973504539266303991199103763400015846040583375873925953686831381833052592068707281951067621033970623672286019557807370185346905975391139810934953921122397609705123949190067756403609445216200799709188306262531044351005137140991891516443840756764170834022168200046537862866907646309540557270910472440132091252905600529043413850949976431373776957067757724952734918946647280057615793917887527252882972503039079042491323227050980075524691897322368989089168537890700658266458733329046648462629676847526518311815498454168230371561819696696929031364087988277991511090510684530309064271064838528678258315581188293486399617132590898055555696685150380973377030353557536017856643243439602584061958204465756955346361142580755866440685105911074436469718124649234897229417807000237148812572883231872406680628528473055918599517371542082116536836216607582710467146535378328109312277051020206869606914851743234276050853624278261060904015345897105777093400701488784612132129224883381093814541982981052107903269010165498099346302798709114671682917789920073511363033200921970739964753065185610011959531068054963773613282771976834567392387727134656789279805634013908710830231240750572579444418881413286899576971730888189628697416204916569949973914300879945086286249455371278110697971856494697727259736804140835652682216056899016477336538817711852053426267574314438273462312603472633554850410376853495158908577200702177130321786980295520336414633241422714988312793696178775708590957806422051354694852978809675636124415468858707326750705620382196292219845167413840922482973250069553218889584744005830214462919827075224627847948005589876844016916750883739658076235444918669061956382896635774985744178311170913919081797468413270002043788035399006299660024613341970181947375860253700049652339272134122083181072144016136479236048595291932984498067460816394843770113507034783031169608794999044433383207653179724881435313566584371035699643451858407161088976677283934548067744397701565657531429203418625151470663265938536708125512717196213050707265586620045470267737769007983948095138858002220151345566882388095603784647988593722454880292619829071553134891814554642820629286720993929737449405341663612221194451828150889898912909705667813169501623026157763428613222476361192860293520613214228955277891850878975240751943072527234491854803274923881615525817362230913392003989727342705940930548992535759345962856585132733419785850874139577486719964974613153269022035107078711281056163302954444362137673000204575691849374132139629898761591899170139003491454058182403181190938576716672248300508084944022118304543615157634100932792662268501976050862159664134892639737161931932826622362376483429905291046856482681504570850554081830576544891947039867746807779477214466096528822603730190287687441739744317592433111494271031375076435654927786761048799436634922666808716231651885149323907899743145120711671525660978499136940396362922374108150948403490095332424596439713327372101050448771042404855017541856160473831276964185599910221674513360111846436596958213459622914748726211879760034385121436721886765514751767065808820629027042591630696428569022598330123913111652411777132294471409860941961100518609803055236296427202739992083762352998690949122470992270524597990333088610154120484180398585135699250601868718635667032824029679167977658336761292261243447293824769031404489064451490808950692279836919107219441367988417060711562423569315465760436106358388388187759299618661238583271101032871968474138580202515159632314807017960397520911602138443959623597531494996723453194328773614435574356615355866345084702680679000119054145241703641789751492360675727094119131155533620046992050067898517162016740736166759173681862290204696379649068378890108915773499083405668978964480497535139983659734652948273815467550743645473250285924878320512611290502322311880117715722797654216648224026630500189073891885659868159583768533598015438800773612613622275104181550432458673582509236343177328855320154212135108182873311429734977635615424582560031960149473546932332106584421557584085669840191652784190198861737944143614147269275791454893003576819575994082299989578450677885005845116463999260608235978589233698686302820621359514969294099858755838027821662336411747307593584872271747502258846612771166490734468213917277807540579665091511119967230482841748129922537458667714581048459782038231396208232993426873722710281582095103578626865581210059170128335093426841717541095772547800252892781139547630732417693099944588181144024181440365968302660276141052767112089749397816641196440561378169402053214367314310019715034407629172669478848046437676894857695342576352115652057685866086743003045747909134256546238761039545939270676458617505693347712471775135888782253900226072904567064502328597647281361449210072125917050344541076477080869950597463296477472435972437188858887590971649067143812491196478527332263310567853832276387545227546554101414276421382134477247713524583030676402660532337056572882460277095770325288183504787433066288122269174418257249750199896353693390352896544736324043962271986626383019970845681083081636021405390937405299715793005865634851344020417343743809565413049736196363296689197749540028442834379784180723669865406649872237687857344432834998180344574974408713926191454457528713447996704314819122169294302811484024685365471153221087891673575298405928786600394815735570499597161158991659406507902000630073267012806683301651902647645602450216986732665403270184211511451146487870906545911142296657382553937562518302240908611387064158972561042593146560823100363949918050604540976444594608921262451346277696062918553586325155174711738530164036015516845591735681641601733871466435383207091525425589952366262851580202314623141050359692287708185849382688427308859294495906437790426138278570157046677797921153015840993732702870672484961220077757886539082920354543810289321794613489308258021044975462589902848183268448482851112246050290758340050754242122580772833163319952691632100074274325460671799810234128861691207160240898027106880989082903736806526314140501502110169318089087296881855432260727650360146998919114248648914350252512849050641747473979805819088294995680878177635047910326319221666652079380332641949348909221493980522359332637264061953333053378405276281403832992039705784810207229794088369917317493730709389691216208660245453358591709727152382430485336035633514855200366115740365537762669363560173553405139383044180802124571808462221190357691309442546978315870832345071058791263416647829574866526626056469925311319117774883594782376983461340420778345106335704339662669766589907449203948937208051003589897877811026297898830203564317074139715223693950249951146964008811527981572744680078397708440220058454105538054105069840750707176338069033605500039542164666822084708414806856489909745225017080232570155098454133592956023081593722280536493269345137367716359968530130455982795185911634140185598007134104803555464974160912759636877007643995838869935092600307485931722878572192703635049109622938052690742465832917713186122253925087937557149520757574775095312826152740747810144430399979427192149815686301573544583636831883283193541066486111108556771931445572063941969711651603962511328587023154874395139078440030419474837462276344120562129693916552893116605237980195725370822661845507186179774060729588679669909473362692915956294823616785597676364133857071855397653624276267430591826624267657953416616939463653331841051677345418257104024820731066006629281879987422676176961536552494445537857603699541224812973673225482703304480657753776759746133678474070384691743329665596582732487275933628858078813046141480376889394059294331743113123131342432787408640244335589589540434641629726836032847429798354347307361987807953866176544233135772214546178003279087231541833676565085542994167643074371621882032440681386232728109204558903916121323216985345787218370762360403550573409062751729555457991275856738140392631858422809992882731665652862701469675787037068226489692874067655323483401934954313304106348930570687018295132059849175268324682644430106985791187014344036670011846291020028202451197576719069652985889329232145180906247540708932108810484093293277043431541626885523629695624021972558378769647874115849362204143108485880774999274289293036544517023913758080990163573011719991766180724362621153014338684235830529445166325251409468664512663778058434216250275496268059132353353887237573271479275482098544921554021396555763545099411012825719832433245189404908571593614622065246219397969708392059645823576680999824000900627186680330054806651216064723624486821146736452889022627463696645366052631503584874208263740094653196484084210726035325051185408255579913955951748192845714569528738016413655505560474558601661667172491404007375392733414317951844287781548208969279709252591592220260816351181397510982131238574498312581184444345002160122409269136354830525886391983566352458925982824512365846814617196912494685195909274090811594167781926030283945432588148421212034099530738172662542085724852622663232071182390096476518897020939762389181504567818146567235410434646487256012507448864898637580898395329967155932359394052740806610916353175418983545260492913033190071304039950502837506740472534841762039656682589096776383696127378873765829728428325272354036233828467963999055441225993347100903891357736282687060141760993916286247260292220750645174788240033720642052866707027939584648246521103640928346222829071915223568972646766970354738270057579178941452504097468162693451812533831849335798807669935607043006558136502504848378373681111136810780288329254143946167378879135991842492221067860148050182061161088269625169627430792196668241441435140976085942151414895828992873594602131407058976291595060379394920849252532783751107728370156979620650732664237629681256243866228236324766916964056170377801778374222301822362301151261388379560413932918327355333050533583972334805531193516684260216060526081308841153135595017039551983810853828880047501286658274018004073047169930518459771813400133815402319681826711619989329513742301516882906859760057563900703003357401043659050803808198584284287562171387408572830219729022462830931521987177222529782786756372764214381561652579292026471726015438513193788811585907007225972945200475921983163335218257518091228060744396311650310110974771512720050085819739463075862302282195600245720733247110235474914796527609720619718094630325936319456986773630112441389830940378560848644432102453484413742680037048982196911595136324642578000088706248601743793126899306980951712319211567923983596529384024519534510348832636085221159303557818144896970359009694050518995520777148669591239849574959280258317805443940123363470881022909254872903874393388548490448952893431348924120005425564940833070932897713988587061613270059731366150566252908011100971935261883445102981733330384929578395018931106626548669655287371025003956787636356457850801546588518695770433088259344055347440217257940114241712872082217563393698372780789327906078837750719056378558153805078020611319035792027057279171327103021960849074513584619322028056152720515613625923616529380783920535997319479576431750876568460378762961892793203475334006256277723894464180573241531493790725040812495082610720817061204624660356231398973822064261937067081255183313546770806725226574282284700279986107870212359788184158617931652714310000978745723023502057939102126865054975821424943078647481324826726166883812685558832719182032858269340211209220986589263550674940674723232762992386180781418554065521921280756448040752245031851164505355137868539976625551213119756763579165783141625350535211838943014761543945665969738791748485203325451163287276631006334523938854733650912013787549446998430832177988820168892744745978742774407820328385907265833838870715969768570178801847836601945721677987936318672405285554743755351416263310745949546077505320082315782583399949194684836433933250007787617064058943696011795350334636965131360657992644188600620144279336986317710814760959360223139575622452526181831158230169030507442815145441306101220990582181330139697185404847474195145258637623810565775014597130322355240826395833083835855564492520130178160027336425655927411936972875272203044615588805428752075247885023430954969109236379379037404015180769320687903615477755259161680390689135721581685657567317279705114921714909540918160680512837614625376780557449535229007076563506441067679029517691528470118628457626843813804015701911722299585229929403887860210633846125848918648704632202199518396315318261235628363216376792819914947123423437432102815975503420208326380092471116030340213811939621326427830894115300629470603885211430325239420795972463785671900442806964858552694584985521852141972631860686017204703678112169944255467279659466822347350321577078527171834102606547200531077203475695922366697323174718216746233566961621830449795311856296547614916583069666766490423799195867376968988106110788613019019878069835926574788249504556464573261888051607962887126993406430572895297724620495132195887112896403059256364308968170986035317317062733547669204527017026922515924107102033375177084543024966676873637132166628339037900566533651717308473626717664075389425504118352087576951974229608014918950561921652426983343388827702397753129367147931405171390292476506839890008848523219506415034437016344068110963874602023282496852412500824777331875424941227499390919616174278381244000466484684943606307283962054883511548781641128542874926147525899599000145892698135294148944185562330395568868620447221874649700921523751058901682864195761153376376525473603300539628351963643257020418863653762423068447240590472770777124085762243289816341286023120003568684082725126736805240240983128152957948461508799783400404081922482710323644602380124736060389097556678338974209985230445822551454054972920590673112854014711600834893834996125385685527879721443778569639933682379736814740844160977945635428904952989308942646282576490674134390417576961219973393913219894132576395888721278269198351720897275892653798723957555549503334518211779704907580382340400056466312154644081110343871615782399776808568017267466650325443902315192383495597280178282571015225737852804603806932277431594196081369679692128630342083988689481937709211103917305898338282522168259585129303881423364029370371481620960299299301481147813897415075987095629060294635372024388566574767903909847188279558559001154373346504073815838235073954146976174575584479084388228031416003483706191192322686874035504817697282596263786367442651494814035215963404834259158291359459526840976051267931655277853796413462594715260989161612055181158356150274087570289924364453525085174974135255567676480122967360720702952456663354475217859701557546082773807903886969973600256616157929004879477469395738571850684135412787728047029861444957547875476235239077684439816212790833318075240276503169512124927243647174300532476996039949542936420815377976723758445285297985999510056503816854533397695805631171681378647321973335601854866106529336645070567925950359114086809781730554093136497699959216776943102648095048519374757417107444949614573414961903515724918961469830735881238086430978806591796475833927061205951979986154496635012526141189322057263613905483247887848571686256807148521911478500955708690306340942019385199042873993913290997027410934181633071619185271436322953830621861041422287861714472719083118676040019147338931028384748015359879391060168661981207682671735624175347190897717650475040628250237621951713934923640004185180424222691842116104351423753655626699832108713072011572774319099451797660163881459695472851863677755129474187760672404154394697617237722736577713113296267787239581515514050471638610255784864733127737219037280266047408646127190325795121359102130181647209673964959554687984651745630537778458528390442033805095876419705942183272149033907327569364749928145834999965096182071375778773585776827820526191139146173121717169005649852252022490029092312829217927760218912992202989490526324495409097419067171764806311962269975461999501571091571366064061968256813121988085107164275522483518362850975850469719071774711762141440719740389969102238444158936762001744644150271077295396169585409103096605281413491311513756900276128862410935198267674614861393621594007865943873729252697505603042981128535995977503621357088037786332182208405360597781824008491909934952043060576767172395861126552157898980972209278188554583643267716545273670955816816223065613204475553390691494281561946116633443528990942291991056167302898411455804099837204502923366941265920214857059263162254047000674495714244986360717654732710878775949635439821354714114400100305204840016190053538170559128209879046632301410578984839029607833370526235772502819602402117732920508452377140795997729103411435756105818537746516737519866608280047905201983340627969681797203311456443043229816856749428356583237455932113256889737765936959689732617180882503243625700434376373463650566996407570841527410409261062925707068748705705449731916115342162758373833554171720274568767310096935682062241232225334488740265280351655096889052765175531217247403569817496045502656016031419859185485883475484457247090294237056830673086847956883069891183907533808426696769893389374396587527997174686012278184092167956320589111428091870699790767958459924556795415939438575433710723922553527168799397543738227780188625548129551044475790074620245555935558065239571334055833711234601069252860104636605398303933337567444779627948311921254329061311808559681941439637065507396346536872913760934986627152814466764628137785785319934812635701499115228900861885842910138953792249322057200178319137250304352554554909795315641938713606790346635531358014550126194371238627001051074936483328318919977561573599470283718010590684465780955918200571180595015813136446279226453916874877173944114182924350756477456339129293776821322754082769163397762098772791406494479701436157943233888006705923742098517890095614361138961506864393896039200664977743307162877665032959334743299379380510574398347954301596971900525668350984399869172001372780106413209333149530814624599321972920762961189963249163295672119217662799446815624351248631268203550970409124917052038070091450556230328008332032794912185925982886535757192660792344615657744047689024559604162810894024596793424384852325227268833801801644254328472963324794502922043623762054093739603034522538297694856315985870997955827737690776499044393066012268200376121218298547624201195465514625241180231309568569046872119938701231541072499484840376108347462541503534019168259771870914430846285679390157259659683059363518073500632628291742615745107116211843682678356137223263880880205770011415189522301277254004852074472324920353469729150299630945502897402557185764356332447277051871772726211641102226214896328725923663923088969541699944645609860208146685318604240874005618774123350894785444381265916010648450894093824429796457198402601441271915533765137090001721279022417384384363450202368166424459989115261561430122575478989727112766289788819561752078523828994382960683134647575910295572256352885467591889238549427454081135844230127481986285957817722424141871048584004001335708852872628480440745943799256956073012130057689613067864775007354055879902476681523933910753878579688825237502534271630961701273136777151385633436454231967161028899773719600018200227909805158276408845932954385996477719485688069394703075415161745308229525172054018500572647305000951326398548648390461716479165338119979186547561210482894795812096824919211717029950989900909846864890527761669054940420224839816371365628233132550423958544944250158603422422553459523618612675219302628774529820551105765623957912600161336442272303842939215559613807322211920151896858149721662446226349343028780656084946213654811093065184656431869904541385121974408383217142992296942346605092214168602066214659913273439941130746363807549614679548685463831755615711026983554223100147081981857143778531002746245617072726064127781841876568481423734355142125728741004760670933912588593400191866397467689464009572560718078226459885150690325665726015027905431142676267480604110059746565680359425017758127245814414673560128275621669403979770781206194915852526492159220303358096677990143833918058051137481856281778866279724016755114749015302688758048249144406990641867254174332069757672319338700998464098978568960466790196621865872557048839381769856450144800248092513021566438383735207367148333801963462757275559366343891175150089976272743281145316716480148904140743609302420161286829503691975474534888322709209684377006679509902121050368676103170207088217863033535605605757962760510929173187050738175960102311162100849395339173652764199964295975440100080321455300840857045307783509457752223532900345745605385333629719210465876890392547952289346040051079020185927591594436827759563487853968638265944184093651477983602448392100040541239568379016680539557191632027782806355712078527771261981245178443496233129933282585856321095262585663216461756582082634730683004239131306182382534265580984170113548720655871505450376412315123155538410225865650384778076997912694334167723942128265221820643618916793246990808555945569005241504564503913594883370123475417819967988288206312315040801871866199047750741688445414874410051087641803074089206050215858374216066582263102615186976371193602748565977557554072389236039831757372708560156583344014023242322276128538774788975076616375150971958479075072265432379386097929428472880468550200567410388451759168810553962826947421110883744949149836873644468608686030334132877252670096017175420190399857591075949846391937402712586179450618368116649819606546280848547912180603075260973331141242942133366575535398543739785843795506116405469065042924851864704094925394687852127662608262121214601896381958355931448424350238266593205413917493863308990907697578706504797078592823479226657424035645855537433582485727243925902874779698591947410542855737940006027497710850117645561395956491637317074990012024839166411792227638947098175463448772765498696780729913125347308155749082325284006371390631214132549908642045804493275255285163522682010712609103747221577731721464791682506771391520650452248982522659485555214357753308037751791386055077933028208417978712074900052857405004162944610718814502608600599941750857070124847019374828926046719787767015244938360513644286219933824358233062200944339758349200688698653746247999984560505634150054026490777269128644256739076582598700774176106350720163598993587828532342702459014978669436628944922949570125260825552272595640235388010668482504629564972706641109038979569193072062923455688348820543113240110477321637321656357012374773259802642076829332753869300876167303442424352397262184516895357400220260515809007296516405805797147708709004138968686128443557935521765581359085106046688438570437885877473029012485818508705290493202603441672066253403753448385876613987709398298777779929482107237696147739489538782135457853897650575389416881905530575115780958015374507849913165894524376021523368599365108197266352381828249469332813020981134687635392126343610950458311136076363805537244424638730753994841453780498365236354340233185120470143555709052953182369620505593785361225178918653743514434890926039176370751166794934712789085815584923983771275949195973034663145029008074036032011669054895286685446320906641867139322246854025691277538328622472611581184145160025466105254837562230452595444542834527493354486059937683410411653915961414054689258512955899243951941059187244790043715418567923303720485243876973238169740766938828335266771821200841772849403345263590981057563836308720979935126698301746010760482998153724477456566364513242348689801976895189790713183116737940821530934673872438774356230069926225833870119890892042430645862844909305303752765621433811056370357869649684024594508371727034296573898434514154175286463251610431127927806365508857224820551434147201189664035369493024699086052427641276271176526833390764795913855138161161829208907606582157950082931336736939357073119977605048021486275320971664924615018609121895770190940692172972139213586138213055043336649715199350688068498524852749138090495425289910672299615274109738819602881751606895733854695864489950393136142026754436604039228564019410358850505339043074604790415918877420801584527173372891175408183262358617155485231059903692154013690732231672938009209235385195269781753296835404578043221634938663270905284794404257962518956320761549217316063099726657206469896957291711557886132942128146937273858429272870668438269207675564560213355120646711284973648314733938820992470458487187704959828789497510200617600833939323017316499980411997740239026099989840788661993529927577653297628186483807691672350922247069780096552691144143354140239096775528321296992779035189904354517708034605981425672987749900579356635394276590994749249124191333711698511479650689743032934723049614006024834333686485698634320621654684167126774311340361179750940034575745019456285846015659249317526518749222777245576569132266113650583382743998622987867354837604434142920900712641732990676212977663407063512071649833705977593596220860490710172954405039633379154103493487934347200537290308066800037361350232506162541267766839971546594890040218504712968300584948215765550402225483118341349211918226071081133786239178451891271530119443774731407037946178713893017045043767825082846241270632967842358946256096173325924360078210981364862219053699278798638555245671813821223191052228599451735063695688818794045265987911354390308634758061760743285094009212212531799069989365690945363005893097592473830038921006383485537389675412797407866686798199272943152466172078099080412693030371970044757535026160061722926572052130672303957811262003628784581315305744675615293769926050798323887695838824488918444709086386604794062203693545827779520432208035958262000750301158981884122781490498678710049456383581314075163703373963675206766335045550816481783883728752319292774268475621824603695158771061858227843140545799022292040385296004885300522898599082782327636790848712629059448487214938833478578111811116544940554569781938256007920420101594418777685198214392418912700935005462138708299235029546902981976371457813765618965850373555113524951519800343478121045392379679743104372987843312412719558668367066253802643518608314531825982513795909673455421571380467292154217534175671602449070936989279424059991827730270630783536258216012305685962098298913624876650238929235750977235198049096825799969274447258950092148059682968404483255644664913835569087003055216264148622437697736320599929722525777102278867219431415363257885960705296046495940324684907899950772692570054105424089130945308396025270738691851357018144342037205565009646915164956507724919985899398433330473267800739783782147439919648320572363625047178575828621370925708179371179415661547930308751481251660634199586246070353156800908605638571675259310096209200354912491492393405794520928098894909705871912714130955544582205844736566949789892909184194727646599388873973103746867850536650238777799486579458133880324475070521331395425833258097141308260576685161559653530712483391471353777826348644477327639196580844083532125534146266587912298325041198311793121488672924736448614328734232280937555140341213553954466485895715316973938183497823215262415157308076214288846278699868453344030723869366693578065282222506351698449007594748987884076497253000942208815138527970357435619598671453536411627744960847301915512688010214700846471181391395359370868059747563724676048932083364513096267191826452221567058099065912880975396147095316749688705647163661808919873974071954020686986734852197554908073137592755664518655761974446417835003534577231030653623171561415607755230855659726019238787048591619008449980944848583989742917635680508295413409613857693846500416793576985906323049281132810030936185041378914093677913996989568467213896377788486303173302735322846679893056316972344679043847305952293628076189572490100939664927700982670332465550668598207214621581257067537987975061340553736138410839985947810306331356065939864807668298302181685856651263897203618940655942469606376965829679275074692705866089982969380994776483519983842264369492255941111397643337873740966898461003394448618557380442145331867138300124331197217803813951452567386139188685697619436367655154703024247198912808130124005105994946396145217890181125352240681540384909690061921015634471117789277180788008369130396265050469725412029444728634736046442317467886232188784735205023129342337840305800349671463650400521296776194500115882225253082699462856946594341066079114000996758974531469344025117853212406766151036067931304354085215265996848652426819072330859738237116734305282642761580625086223798701598195707560414237237970697189751930220181995989451372584969015075148935676451740336708073060802087055222729971810324166511136094761370367980372102767349806745485717054526057756639217039668246226880358333064503084930456680674943923928710642311489752818910464591687443870829662410052814171764622230677718105805155708075978998945924085646988573530053072966233472465675585612137376809390771846367424645970513916956769328768319923008271843648992778394256049940725028157025229166457159371815433273693523425561744337617139331933361444913517010380621904554045433726791389143804904801879274827366595697552649228871155472425369586844170910818729418006358717097318412549787272539801527379944612199778708649815114008535068033668106129895102581515883207564194737633307376404110566872335826509267480289470793996844376586056493703132899196450459968459896449685718262517457103628581882428665348448941839765915970126426502670752077215858451014464694252178101426083568263957116694145142047675374709594531050546535267390620888553996054704009518650781920692933471386140271265332439680897455995693297764780488804218189153660047610269515452059922203969353803616959804383602134749433413932084181210713769916619748781123146974933417214381726615185653381495154447239792188315454999140796469544971583464014691712140941720270107440174680035294429560751326671306439969886854877870269972143047919044260689902428982407217867441253082790850988448140540513101453296101086355218087093907145305329591862661031791436260451024348100427066205131648417945208029404566447251535165395553669411315687104006516388824262752942593489531453930872562429355529505830371213063632794296674375426914245912603631972883645535590810830794706563282643434097959428355909104000342851971702910030883602903876514366980072529691913917702602525488260312163320490043084486312109892419913083589661969988548265253645232480080469133402299475357639122353564390132798947834920928247687484958663096365861193065558411958601596663809955262185716668692986182887335028825037985433496662328902092583657392975168150180782599603442392653548479586346929295556268734242919620235292219707705412871131438467716456730933614458895690580022947605963175656028956654132737387484068601280192584781998201964755156812073526859245796563894541725856217048226819098804171290080241247847006074595914969690528587201996447383210845615108334127763115108648829791912687749390099281940359422750671310716635460507227004779950318506544657821391141917303361133564969396565321007522854440715550537330801035399862127956998719694388163850919140007854418781966582476203367566475633464703080434691160964586120996226522266867776226540207269799231001124177579176943164134934755965249447089362149273118951669509428081168146900395683197034912809089851403859232017214607725106496895833746145382725542377115286490906144277636380784742757825582188095444681677856704250836657581727717531576700189082691992337107016212293096170351519495126975925864206019471866252763331004939129443984776228910441877238252060861412040508215041656676459087286929496391652137046430153375933949733309970374402421772616267566535427870632533221247819181395113329911765925985612618544488394244887501210813485926269739529965802979031118656775050008318835869201040077942676172469597793348082573057671509697160125256916858366069983090614036339619751675877195392173379728407079095059202375580019677260175057526585909468497709169333785631439714542148890048527781724640035907538969172972013125370719429824196365079477657900316220394780504465156327614963435250757488531138125695381583227729050832493548294349465027502012217666539473046683970155556067407528255043441260130087939320024139208863249855348103773043202453442187540619636267950307887661359736139302047386046714227444104548848797633709754254806072321324462772499800892905693708883158368965154081533703393884762246577759201069829840596342029427729191234764902189420892572934430533642737055710491127929608740532173944341660290101281205497117739016935666924126230622797185819571948231855878849323157035099555462106149056910446143812756919513873837293061772141836313653483346705176017730777474396732044661364125482676219049802985809191125983997195834905274987459770913579627214307164590166538989202942906917454138896961478356342936812854637591578908188620226288314628458237488624554507039239652727397400522113739153639874199034475328373420068438640005179386947173013737625937283985839433700147291163028100074189064059697513389468277627828956186953483088799472323420097686337370226374912067027289257567039575520048719791131836838026193685372972638890923064870167476960720618658218642059476953483746575267812386669269735481075590438557399200012718605725290726727057831281473677621156345703512073480908142597876259910697065655176520288043781388158531384344935657689523986461884837353397198120982418158646195186501811803456185542456621556324696652083998682678948412058453361273414643222316744682191752702012410276038643973915819835669723918471625522826443560375180731285067423749702300600008453914693989650139845829840899816869185414569155420298531402607792242287233901309002229568986354258730731528526778964225070959906240776241321181550433715465316857153722693440504406662511032114697870729865776492479493676823007012679339934349968981101568715655051790386830676053469584014064814005766285119202498170944084832563503111883391771589764408732429529776872550068068211230217740585355332668286841150340797703916027077183204366323507156380011615817150798323553764991527646243240543830623744328242295828732580420867300714196472055141940814571660610183209403927480894582542004884670574723275500154047308001863358413504353198946458757294019442362326828872633231539512222377875892340176233069457314666192246197075710108420924627423816478302888156806450465573947843077047099514878004887640719877030768481126019356325453349474963254862002403297201164495839951264082972023953702314895365712092070623849223184147909544840486297095055537193527239813352322151709609644024855878286762326884455143765892961224581184989489744319788417174542506111548519804629386204130631982427330704777875551264071661433121402077089973091860542379487099756577070070768292769334679694190632209304901796030345724474532717319086765926022008465564714719941809654051340374101749871757028630845008948938301176625906550967698013550056534473750336812442698617661023662038971945473494320945525398998916176375431458925067440251126014602043739901248456971876636227716399641853294685047890224833705407350322863523008230901468426613477423753784657758805564228368335094985746738300970426661490460589874397497832520974739567270650308533593029415260393976711978740630547917740520217209903268869524179635580964971361139020209805404426772836302922407759080711671305594096718901461516852790618084946057949824303959515887261719239412031081231383823147201045412447141712954150573293897831558885953586531672684097020627941275458554920372193437769546875452229944731036085756010846808026608465072669665721117823305540760525814674208713009727187846503152709374637184082921471556246478818825364293784193244317576032911090528076397486604083135964336206753526967634867674106140630262890781426419440917140726663819995855925635576629998333710139410515130956575955274407445359665208517306827682651568725032825266433846792866984205382549772236818391592394919405209502812713534867530134769990005881547185385190071749555101955857789431311941572466129474669313362112301499110509596895615480289074042417249587682987325669615813792596358245259826935775069527271871013955914031376447712967146929748362423175942306502565151885755995324181293261934409493725561459654345782681764648592100541565031067402329329365073952126946130312123187783065669347189154125008642557728337408149483616565362658858946451011430261084308337486543647326752655188098278093505053854323090090301386759104431049947193498151145643327581077659087070226664024630644368680268225485362296947122281228899369582245867897261838773520748510288537961368533592790058631419114598599065884819943871521469224004907010012522850481164324007758620842433209368431641413395787867125447891631738180068511363892146979862542357149582712968992881656547122127347134133243254495590886781532736198960108308702663130443747380604751024842407605347375538712231454199866082552088668985963272448021223602139737913524439852849381993635077739698994079566520639151332347606122107450328962083495860221065633993334528702104780298354944573398236851293622109596459195185689996764243650394069231619897988752654991387400036071575119031028373255295277456984244818135746641254559965986641812419176751073844266031403630712630994775981513596246400366016946551735294896226296966002215703859771470520830065551886488993282125749528009892297551679628408175545164975408806238196811415192328477664403229187014811807956870474530058084358960899637135470082157117988050051531589000001846461355967281471381480400218780316809745095252515591343529532461515428533189124424494913163745098674947799784875590367926506476931964549114134731230365647179632178714469587232770987962808147324198714414697240961690490225275410067294875946044920497673549535453714064737895900055142468246361734150116193029186248127187806264062747991434941019183962902408889240720123913244049365803615177807830226657686679233572471789019099224706399498799137144504307854895750077621911401788362035315778653071179147441170077708585233414550969453884018077443621898432924646841971755583093829956996409188404143791958069227446329530354437858000986688879655694997444207615725063143667689493294382954972315320703141187701189431457009340449073231495023946898888227613304087873152820085947990680502562983089465579722145782000149999782840925064758700641741742805367858098874169742721722467925972269862723945779269878586386386764645941210697123507335048340205715299103709323607693061174043675316053339355508333473448210059584991283679843628514268480152887988338727148069339392153240776189323601941190820596971201849269381020835134872789075595744577694858505281396359358078209777300279219452329892797733179487919926081260236734431373524534680511020965450746375140612152418022784399343940284315600113082293763126689290161145239285116802213171719422687640949045715882169953678785127072642004465149636973399115774691852944360616926406554670313361316657362688126443077828858033496514257940473744643929563269719795899867338885918943898980726466930515850325687483961994063672926670627785619738805755386627741422099152375966178324700396387867180264636661522496525035913620529897749898741136335986405604198093733743927337180466871954177568037211611437746354218816014731522603460430011390107310299301196245373939001401379290972317636014371287924717292412100322749270908183946630896215321559185885366312879714592310722886364049131476449762355918015775523224614944286967426232629748564993069172567080450277925049649899197324130371166802016543514196905032127016128896568643838373148086623485160650381403921381354967123903472359355359225479761599452043697846151446155457542638029652595226251525282305890155943723907300449351684045182551286885478983779629328245007377894818215345756933326171068820126863701743297891233282888182754715163712538827382428772754990265854611376146175331957461403978258370459718759191100691434861278678960491441635670208551018953074102759604649216378876203892743986353902048184736544069586900504687723745176535565334371276947482187247079280396206119745376835041187671548983376750268018813754681782185094681843655711888126133396526966637017213774957507059792202548160886564437119344869051964269134037959788362762168324495376985924402256093653694048302926042485448304307514562160070232432621720430755762353839071288217338517194552676493022650169891179246187568209115566502525904533870066141872511329941793301511705115243989522410368303264364191377663858757168006329375313658001433290651883555580215374634423047564346083663587353515998410882668799782647134756943257855593237854864003992046208500967309597258281670038918687716945062414400532417604355424115620689374314242933902499158846427909949027060583379600110256123021515282421508881202902392184727194075465731670354671061888442385068944076959688071813518650498586337042770262307917204584675892916282842544424147038070384969692589039331699453376565235653086294372596226516252263335782514255093116425905422675426129291631066077563589160730591993748972791344135262917340847390652679425983231473575395305706157391078414210637951513888784005846196628119936921303405923574995157499608789265134664327173496936736461149467148808623610314691005549598563962425466735306705566958731902257264597652600054289697139484099149883628138591190919326963644149865727551557002223750893682736807731475718413711085668034520478513031268626529355220244900671816523549016317417078211747539434399292101180281408864608827338807624623815370766656448396906545539671003670400976793604800209366315798133534581269835145507924047758690581910594677522859389652395896128388936227678691599565599412270934011540399377368858520927950769778283858012648208205622133934565310258112564234347418959893919192201589989041666937130078711311565640806343606155200958191487794276311297552302387581311767701955466270700662120978016208114255198105491166310063621278130786931130150487657004515631948405716898886870351703949035171615085295127137308176732439503358891058975385798646858683898836424143362003503005162680817514502106542123701348650284402113793255926305555107377543311637668724624943787286814731230438573862173824663316181130478122287908114769541020332052345736138388132090347634291822971026324261183082171616475445139504416079352279682162592521629510654576058746492535502381132284371861924700108288695645935947863297415400641654857653579457493114920156532764855916867772619211486359405948363221148838989371524857507228571996785392799300867011990079470936357773095202297811473495936394457835743487210231057948289961495977739825347756418210018423602620154372247967139869665319903202802046643248904975429400037412714160204946421148235957018725763414010029417137043827513943212392739760913969915410566448655214277899441772978750689901357344854520464725651691220367410602160971308069250251196737324978208673568644808822956342428606106873827828901021042097679286321730795314419346907110242356107022247859954978169120018054423570015899597064821742516374969275738739925041229271906812981854670947090103272698084497735067763495850013174067046335570704300862507432133808553550878189793253117094294554076628717485109790320862844849038549276856704184279668619375293298731846514907580447203101411062950279796829983087179565503217263337485235078439537045735897605772818325497815376584403255902504778095587791224408468046434099090450662492446418692248856424501910564511804118367194552441248645797942002216081398045170429624937069666365182393102191448949094690510541161432438424684474842683712622945467983137694981056281077894813759577435473370059639703617965269815792433579551680960774693208951574518897249724257126782209814650368822604419661754296917265983904160374881866208965710471316564470764741995257525124875104097451873869932840588243288992809777117462290007037449814504761429605505185593246257969551451514150239041893707912401457105527012202223780875147209960224751638474961259114761507203954918639617935296852369684587195573077096272153610448566633474707866438625952978583024516794896991669695121618340332011147443508173016209320598169258913040107945480499887096369567947175285763053662663582258604032908992363371588956524634348707997805294378880482947935889076743358210742350999090084949684940493939850852350884078424176126140944725239619778559254355576717151597198551350598946807897001534803969846757589100984353730341274925333845300176375997260667053901671183835958912708057465766832076733736766964705831452635401911516737110438895343896579453270849675432876679189233672696914640416479386033384283711059210933867501183415651455241570085368133820140393138524693193296590805097972323414860142330746779229337094261017286648008330004041550493948140428465091835230557021084995615042886879619689371854005915678426976435609609173479257812038545533932962536691058844005649177305179720808388531152209384767853130973454446015380149286380094971750859209168438597121464536339190433594999640280056978394080094079744244296537614201250970021328545116108688951536551548835813339688679818031263880494212355064224965301293096445460197972785056205913673044318563010405954070244640118313013341950380629750413293935288679915904684420154860019221841618097216301699677523194922619598052852490343369003198365588567795498407004039478388708193761147402836633179004571435953283735909044280053352724342486796908414574667529009836077176229314753543285421036955566247388942494632840187407874536700882418822022080834395275990492450497198086064169826455240986091895673059333205785289047493238364771342603210349215273582644512236632113492729138061628946072432380273401921509664536393361401901893208535664956574611717453097317622161462009791662020605573374694406258687296407554582751037876592226485747322424541835010698481928510912567668499709462257091774596946658551944351611096370704554752689991511462341867114187186606914716803860957976705706557826053630281234623401185005352342473585119783700133020736251250352584277496311970084580589920668780592193711829139670819469912115778900792784072413362420931860531695756000147071966349232473558427386866067951784222636964222824077517100837398953395460550217478338804786240839228271482332728788721579785664212332947652562027838885845876296118092534371951066148866177550363913710592328766602137937841689884486091513979870529344476778259175922408371880905266485286392843175987752479320144859646567417334460141928178905827625765755247106128672702443389838281508769430088597978241443307825029860370973146518229739369988605494436049375052811392452712466738227305001366334051564454046082892941024443270015162176291570615523450070956398354563209341089795338230419623415864494238447140703218756294851869050866116289905484795011139001938988853809271712626953200693225263822188241336125846045768979166995694266493931718816947825075087883903707565869642886395101462557388375832907170741659231838258264228642402758964863765468643528609920540457834382851664709386872087601939136962945938620379732240385158398548453034905913144132373465681077866931685110005681085695326517980772036674811291877545377546753585737309063869861028251037193963152964474370830244416485495435721270199830461117734052920820198477502571980030206943067570939870943580503795425306147631500579993725509966749556357739507358829418861476810784066388520485525600927413461055118562888919513716245878757350136356631397508436281871278302719931851360014001667621404419731527416405157509264418865083360860463751051409554915142828553829070050783424173855487138323247208937763625234718224774567963074103059552173370357199891444257650339010060904800834444070344731587689207926919625551015424249800076320075959469673712476584342215444808497941237007125065422381173918096255595093169655813914788069140370783560224949022510853708923463367975690866840193301413485134189726581335447288788931241036869682250378640079661461495364972519013840145605739528915029399700336764812208811582721553279727743655713903044195459925881183905955376603312941850041230316167611509122826188931268985230258860475069055169954713316663418134785571765165572869118183854868434990020951926991996697744681331499193431614304945357418561947351080100066725167603737769514850313369023463515910856153963526286721471739372684472980865570699657307249784903793284631905105976288976681171920859048429286475306074314540403961654379394641945927108215175203705786876009454708541286524181685464385500826829022472553926463216369049130534301997869042315917671491247648720847510028280216883982070712241486594688097599578799514856901708797754518256350924506386542077393868512902260180781546672911193108802528893375008797473119505381734488514947757609774115712264403477554743134502016790176638063243282176542075835199484106934672879547812969361597277127853974117114844071329569311930553193785773645829661185962064370198161784212682246220353255695256071503618573075669091941312426674973669670740637930513850457284751862772657384808995176640225097695445008849298540832490662080069127319004371264200665496935684703808079647301795875970931176289774512427866994471733771692544944849966957749272937745725937063116098523070993639703619462346252191554711002173443193042983805176268945606518063306581844630861633389789022113284998788662874961064862912695164374327521585725946423879785823399679008068257191307115502759363418924956431427324902858447452387132717528489662525609135008959388685523342957948721491733130758935265782899745406005438552154080023387647691778393958792333759571105851862162379525772187235179802682338008609365225916465343473076940785701887281346959759521194668741858627201529690344294580795806288330087374604823193205775955410411617165585645474438547827027933514806137740380932766806434760781915780710647692944406330674330095151660574352206796773261842839130761157102030519820390564950527156201635623270410258708332744347315994289736315287236378122126560847405104498696865195470344199762408014899718731663607397985944911722450070017966038980485889634326775344892482113269567930799541899042121841683317606570153629846306994152448169316394985099284175805324318230471030124022252724914872495475089629949241872736739507167205444448125657670601189725194684404873708447193549722204941148153657977315798665394201906994836245657096952630245735668434372743080357200877381292800798554492194033930796374607115174604963795567534059838029052656291859899159082276940222345356024758057814452460141420271519289110212138840386398793124523632448663135067254382221962092349463472914989125776802667389146448919893756449711376949310255016872406128250802233028009489516426706796038558744259187076213824219601336973246059954185586447682329292068565400353865126915957429553035227725267044819453266942476926696000892855366599368584185172931382895710450506526265070662142052273662491754143464801241022332676731103623202521162097124924005631915639415688703801368246248319633130690830259464966435818986382119181957696726286504864346310810384811160478287007282892372728201666805116982783315216021875712387996819139868757907186509860957069646371873982704964225822368635975078344501840540454129545579276264233492297980344172852563189671370078537222711311445254858171628094772729277251578859214609671681132597936739131976356756391472011670098461116323155159472249501928882509967348674304226449120209872171615732397408795749932369573324439685396664614199609878803137599930619336646374356109285507635583794399726276175625185720639128262571834454895147447153909083419506612052752612371701766386714998456558088581561468744105737807306904074465812204579322638162719305891503710743671106880396572356860814129304870632683792103001166090458262603716378001569131715579925923126951456657125734624798076295296573857328888515527164027994957627439694181655363510694433787789687465494676351641825868137479030919291062617586301929638763708548279192232814049956874688585190970537511702221248650654008853461039879549238600617404504898818607136466301876252428119016775929041116440403828266994995780649855234686076976170447895520330662533165661609943700020150067584994855478457596786274647823676859306567029063432658315936317141805138058778474055315656661563910929039874939778599146028747826199173838724031766745160441915397566241434444706599837307118414391648118030991103179126039515498793504033019133570416847402473280936212645859780744480258661521553365338781425850443743997803903175767084225184208736833212432351241095836783629782264099285582840544886145443659838711294342629865293956718320602032091026475185332447557730090065861730212687000076651564220647467795304995755419720773084926716361777906397666930433719741594737270739795021932906459987885691299933144172291463095140722444241309051910010576538183275779102856130251500896855338855412474149612264567997284231428162813107657897497053683542970466102132539689513490385807253916837305105635368241264359119850353741681466826335132313036573817948186205062634042770913457308949332403441679108173424245361323042396782045111560289172854203701422334755009223816600284018960214517319481230297575454283111500687473792748854050735688539675291192227485013210056139943182772577641168962393845237343116651307824266247853730436250603547608543236900104415526456148019020206902915796503288030010201864354698216346908522083895336477187063403893862797082797373146173322941716211832982743388603773418935399798915483317464869339775649285162618829548261632503674149168366207373680247435989562732253354682390344966585721168450390614599137880166869466397911002809232295843807349978146491858407834848739893512285577894158285819796598719945388210683459187514245184115166359064583241388839968348080374890986660356771478182865668141363591639240070015656574122118699604432149791791810507142597251207590791755141942794991571123028566508944287559499836017512493150026617472285646216558711488432773062070539574715213660479077527015115417695382327339395762507301400801507341399257843903244213039525392798909869675790464038847310690473986539086852364415293392055318669827283061148056032620924340089383130670313847876991183422654023423044754490803067499408517242430317833736583947511236459831927205304394951107191954005246749130184664033803835529825337647730984698117123677254591077833452043599912739968940031177521292513950397748528768915676074739130231223743579659987401640787924549490826899217172118856823666567374215099784677272690308735084632529401966562856941018924973094816605305448107608613972700358214229773246539018578223190272433116033941311426949960645436821035198992913954973335344275554713755253318489037223113188047441437658142927236217962404462397480066807710630725688145874980522874198944538212240850279538801575114506660453622521187865576932282450738701832398250964835619362679109070525813116958155311459895154064541877110552957350854048187457458050424002285348669259986526312485031901552525526487032387102732267364544347753494220800579720335471781821379426835561754275587494886792483821894949959636667033820456838976209186642528629254810402992430924038106233798051671974569265488079605439746049580991959541128674629581566371948669478794620507298966222925657957767901942817826057444936108935381731553205719846301401741820027595798549146897790303898681631892943518612435021194459379128089405314448416452721876757305524223700731576126255581092865980852163124900813247337847875675337715086127639067220395350894016969771723955956377050679632736430805475854225061980594099104352002477148301473994503248545960381917399642214746794425112561928477968985186738418578996974731479299164557205002572879671502656471426317918373154658395385011289880147344361056545084656554231209344650169989396594818685456946156137244515951589751136525016609051981317687972499272590411232113629078364674633223954588234633514975443972509464036262641538014576751626537880795896504389065911706897055506310862856985387146988308600626487633292298184246646203141965663531569605670451154590289687861135841722070277968149309462160264801331372644215334379439568194930270035594442897982411318026058125355820962585092436393177409459729853689512289712620270136581924040937447101814348134701578688500837884729621891416837650413752908940304276782558162115616425348587599021748294412744404664599889431223503192559162117284703914868731831288974860133490751398601145017295465520271236103649022244166138129916770439069611376820518887915337822173185762227721726259485860508260379355212905791329804176006418162659754910085807010653641448796520516125997816804040416518687923949172790501639354413406433696903444104528859130533289119971920976348235287880706803323919418740965789381317363947903761576321120127542023440136441780720829147850067246518798504843587696991368798182942015919019485997949085175000932935515714676173537731981692500484835636228957565282564927687352652974905141926904562346819686954957324039145125104941640581385793591719652323917859562228929602092980143686106132134185116742455377640807009549585315379064014405138555119570306635770689889970293422735964247663671845130258008666540974402193162129092899444175728108390068049176932476690323139546589633677939743968051746800370988076201757654369664672846742719354934464263393127256460485511575246225108613352895938774759372805713184091942185041221821824200530540415787141269104284566376568531944354850599809403159178848295244101990762292150005359904307106722430681402518302323362971755824513735138423187643709353110902167221178371677963892656064872351876061591979018144144770718994380844954809484812427624497665381969043867560064555441881990302057260416906692348422220301235019601898362497013624907361910949126088868651011614864647959943758764873369025147637526981264827281141811668483917734338579296405685869887263938367010779241999478199830639003335093540918021394576435947046816333375557002410662285699204085361162546201954230647177855530975891686215284935161700755769953880413431789170671034022074921950810432365828219554620605866903111077616077032596976163648470555498926752959835357513852384944775917123202889234379320320629534921866563649755887065395334338822508181860644946441745787087326070178649226877313587249661312548683824689652852506421925050340945137151234035980282193119126622015515239710821385061559712309731992624580482913804762224571096320702470583813772929602775140426312507321439198913282025423282445782495764428857507315008494889934345746276919660277126485984391993992296504332960425340381247733330657320347390115925008559055108681703420789923279471272963106170422446073370478524973603849840146592961942399553657528591386452861251903488736044047747047915420766396819296943448462824942271389255912099490482222138418595319854583998126909841312136097834052784704100991513597461705878170362198314378436532760371094332214128775317998311823899689219071380430855667028612605490528616105765906407337478493585172069202391395283217197314918989349466610830873652170858950867047375144609936902113157027273029002206732234605444869954638621405627945997663696548572470123185410434748109582867426454616994609206909614965281822073011586091920817923450953369257959301109375692396389715581983632303981024635843073670821534346635929372955671447681282256067529069092701871418617113503624523417074426964456266816881862739296251454021646687737742838847545412795417624174181868064387562991582643694954527450925770694683006502842752515088915637582565466811160730516152450592748647173550577708751763355421517008302414012080194592771730102876232805909870980113492087164799063937242128916935333753562699081044028101336037706646768006142693145033731464708580251305607626523141083333215612873252159827941215733372088485394108919352252768669935160448581549358444799538965495474392343807610719647812304279846384306092250186061809372396876412155123648075667158003675987347761113859142376051526559599296309815501138762431599348144839825161421806488317812642450008602530797110528643471499117714468504802354788479483727440168770690837630209265141886956633585573985216987787368306509573839809125353384280410660956750335275007470327966667136921191152788788224806302376128664986124922556067047067620023990234881333306338157807577159544911731003765176211074107066389109516459726613200866778297641592279074372768219295035781879085825758323286143398406756602640528402900990615005716361484245126518491480899485839236566972622309756468005431371291613502808411980310843403363728400282743784532109301425489054528810972291044605965837400145612894565038877559653142641935241209132860025913430178590019429426143631156598445786591921060976000798894445000679783628637472926987533366954709800331712536577960028466579048477092292175978829005299912129682708852207757257282945204267209177621588301465494994307965809238243925182742190268019133261744169271668201123365962499456105203002029902015120796982790231185847465777139422202348372475797127359185664407500919836792872677920792564737401182766056011004309931113007484513835962437742209755196955452554772253842717871249781346443649906162778214952801663152117398418785852860305151952307656685847519111706755653248678815265554781897999556302219662047865647234197573118801072539939935462536471822730197765466751120405927178855196528279977867466352572638940461688290925630959990080212657124939675255313461393145829760799852274344328576453415345722250955113555259902514336846091274761605040065149214276024860926130205464414579860864670617573173827832846713221631479351820858968304114625737781957226396818870704589480708755608740050206427358248635013475833208299740062864602845421511488533194436136954699649777950001178516197209428789936961595477938467452924020549550547994063094871352555350260389866087730435683075144639775110660590503674583387693384737147156676944958356095792495651030237999412950929749960286622499970985819547931549063214957295610852298312049491597289173050409872622621824574201942610024272880667311940315678122131367731470862664480129501646875800224226049869465829407154886847102460228184793591841550523882384556353984821270840170287233970008893881936730511114885964848202241726230287230697810678358425814782442084372655830247455841722152890612005669572596812931383336920021652569248180773158748353795670939753249724463785471197376200769600375978675388786570333866376124324165375669895263890634047093996265514201502318521252019490299328942000371321721988719573359558894300224232115587291679878305019148203321157184734824285194629821512831154091074317928200878085052298440787900847197170901614657358220580417913884622268554075338637121972573657807628797355716965262333194649493236802611129889602423390243051857628440972095114730949846430809784812579278486593473906840351286103739347113137647038868738104569139410385459429898647155707434213982912577636808038197721785177729015483545862235638911885139281811599501236595665895294212989760593572590030619170397469952305680788692855162415373365169848140470419958916425876913600164525283533956910913308150186693789335330485900046205309658082958560665092820939478895475940161081790960082015448549812003568402825004144934469642643895202258379662680836879306021059197355501106904329820610610026741874228033877803043028774743248336177692726864445389509151281841451219410226106700716235834372978217770116337043770458271325186159279085049023740417893644150030681228252370681907098150159151285728687642970032071008324638076217362063517925415368724158266917590756340382245065074079370801067819248226236171831491531862647631174687106642714107524738483967554111242383111489701647893195413501219583270402117817014783450475451162738442168183219792089246523852026904403579847414607325384319891019782593106927633153316110272825814350716665833449708464099456780365968998063073340324093217849151682014518229780806912085910702623055445561850674716330670424300947296121908381311275058283358609823817691214051151452954318350762962136502987471657131843792788061728432236732031565094560470548106886041663745273687989033950672430302213241251934196820924881548474817169245192876479130751925959973328127938954295565550803722703399777165511214389426588192942371325958446400045684586969213634822471864619952150798522427568179647700976713683807330150834717836522240055611766693611972848424715951626228696430149869415246410074327187311235026708241610663550715131632982284902617307360820271581116807453088852057203444500388774755212587491869476612415395612180909790316733427789841390364275897003022202583175343451173719667159981046060516979404720904814674263866258238182240778303493672784578960548322441636945302248021754261020942966907762455264238882541356465485319168429821284016413539319056823103443203030671106800639399997776389892661784219967187578227833104435785479039998615594911528328800953107047974517357955690179709132990368837907646487528552557480633357151412159354248167398856500375424082220361034447990816741813352323055888280684192566435930005364975606197775015464137985331810587988887037640143312289759705402444610844110198357774964898400930571758170681617017052715026810978444863650364190151763941264636761415188465863572465627474521674881651122823677666439916454230867543776080128518843256235626170943427533668702433330380834072635676446871869799160859188681636287734132719438053588344487216107431898103137690834288303335509114245108504921463224514583962311500248081142953561228108405758227819150290954210886189610165901864409380649129291820159513897778710420695861131705070070039684054530439212659791253656657520455619709004976317618381061292220532445177886862638746058356002270132430125455657436601752333165513696629796468499509386008221854428689842999528764476435656509282673748760314958041552997646567421449838779100002066943076754866310967244787465625323558012395206091184814928320710518715211987629459055440862552324526260581771148275300231136861261054351538118347611262139961042631764925319700650966557740359268154446445313195232912822087389647414596795579564645654108399203319980489529305437541555686930375179150490171074038634729198248322947017023260798663303887697535916543565508987434067635454612282469857423280812656456290523293460820880429918061427264225733207294454805957984170671404164044550913405010241820051547306774622200314560554086899070928880064156457544885307240433252928901678401307962567067963788433691872797345390568016512899803135420237379540073599715980067263226175713998062500566689321306184842074124440200625761440267461891596258069675983499689270489755793852597768981079456345126908224079708376126309046561414056535554111101835806742464628030842858914413280718259328343657678180128126795936533066769454934737555827472945362247584148579058459710971370183158259586746538973057708408647626668017950772517523424094090823765345987503887823903359744562085022256569162451318220944439814323871116781363347096689547155614381277621467925343758491163978823734856171452083961492353904100802171803573159331892092438963176303771363931755910812339915609669339400000613228715222327689814602193429779377211883651877709447611423820008987093888926316748654361197809163740238417499320330587877083903887538546059301839390052080697839170246705900473132810163022154134511289881426635651496899436552476428505402500551425532478950593420362060033342867074433753546829327208160940599286150127747318330665197996161828384100071228382060894901418206997048683129720106938492918115877652375575273865631380875653040754287002621566274590718605596854530373367215052077923447008197201938178762881988262448385957898765772655406677215473179548022004169344569363043234225175156575822854889556727403263083998649377898229278452856325430810315174817474746692271912986920707831320057230684204769005007180261198178195479191986063913219410282183187839817946936916129304943682764003852433574081317664138513782220176852114078301837287321007505353076788455696920407856041465530423615178728944714723662915286988968334586647924799357493456885068144175238077648499956616844942821933255178600864142650369162200451088225351063477665536172276948954821892446542111138626661527619421070439901199908479276751690641286647689631941592956887644151533205440245157481815064742028024984690030592627939150801333892792106308787138523847994395307366034264019584007416918349120204944220286076993907183276813370332194696179041207872072548690001308353610881170677501390065776203562509391019512495531173243232303822354834045217781527077740934565474409278737673199945267094493379243853618530015024287366723046409040793269436670180319578462863343350168590940501427102230801932965545378877706959996670041411194888125997172690284084095289790627959870197990843533471800901131356741555597219019753955488583865453072547394365042058518321517730716743572481064409465350453022655425266980321881857287934059672324267786294776081694505551384554863997463394161836802648373882443955410976721367592707941563707955573025280255779683807943601751356608982040909071959154839543729080491877441874555659235916476414995354352067723549756955212564005458041706259117822513330967084354701233108646352126280908451581373356296462066911405027975193873083141547367332515722430440486510595285217395885139775287994032257540415035038771759277136819001935981134469391315313010690559393669163869329070724691867794676692487897134176236489816088756871456165878095007698760777369840022462980922543625025873502410571390239157774693591174711135228574781444678526997901922381519014426871186846200018089022112040101037158636566779824343686195119274695809371160076502511076277902160227671905708738844853420600061921923487261543203199075140496581652834291326708030852876286343463380581180616076477826343149523431606385932076972260595403411797210107395843526457332585590258542587118769869399760740497165469610644123535303366674852372206956559391005690825104411171975428680589238115306369243498248183228829041898077547677335744447579569584374170646195073884006562385505604546064851961270033735025183572281240835932221598703473231885454550443929724770639674801470440454095967900001311449436643570800728809277374483771496002567174531938076267361993186391241095611898322894227105349006766972748182768251650153433416627522232060390387787822167582039936866759528819383379720098613100185279339714594926086013544636577811079909186808677875139295812765475412106318499797125414614794163442341430559528147845440432075880052771309530678002470725565798746407028280302912747785972869204214416429449372604673545763552890737506196983658261988773483504109678519391813685861359969284152696790239333327945709442494595164279124323398237391613007166028641298629679992279614746274101331395361878859201335086811035137306422643341355350557880777929940677942091909561389145849779393434944681639416843780523570490377229631343700320069859670782861524192474379308090304142604465982788937514427902682045570207628991083671014044673656401665328266411778189955784262670046158443334992651776222707430601194302112268072286798323466963026599201057209206187208133848725209491747127652244797231646272694604104909325418626551793482451312180402129353086400375060182304627110342922614322230622005658189523194434576703154540318325279201924234210069434715963155888716920031840930589848828632296443111420845647253372816638532918755855351207125514607921941870486212987972906464957217582036930453797954724348077450953598368190207234580661370211886997232967154050481515394481830228627144796054777385944313813252005620847181961763559443554692322214405127679267450407588068622989852076976751204951742301214398450257258342556020694431155035258321993725134508599683348580039839985499153147986624834880572879390004938588160156607847476140184473830622871869790826621520384188372437707339042244495382133130487679872958631793447060211202058694007740050676951878731767305620908806630092124264474748157150801177421446035636257116014503435451185509381321158754767225342226622316225019298448193720200938640571047736761452075183918252437895654254813908447064092480402647990896446566683359771067612306503529498812899798544386681891480501413695493229132732588725275881689711313096668752768630861845696720137012474103449773488586216933664778822813252166117444070829135056773895751134472051599555318849194497328136361864409124467961324298420733296994024824626323473810941146170236852693820912630161823241650432320668668603275074108250543446546708780971589210335086135456827798848304994769656335804675448665545382400776561580631031178142764089843958499482358433945064287558010724824298533408478951258136070966785965720536064281025478433827041338856056699801429139417128152805049251239060523265099290935459759568431516259110850415635758730951234496707308506547538008631516447178411754026337907468985315762521884685573850281723257597483998228919983917485332431127064533752200741072339950382731501792892598945312996399660102735481748251387951181990372852067347375924052531367602759547266218055724249308712589780727270708462907966898657120641408360533133907400826018967389945794547242138540958685053367783583386108322601614217614549993841385723644642086704108819019608112564257212747283888839430726892969990126932306123600630865952426920258945744448999796726604706007724381069837596785525180728529828303332018651987234711072212817689083305734813399834917848335286629051743933973335248251886830039093809560637272278640846145081074078798630759684258083685565362716430858363898301495234301659173402551145543193576392521403873170439773416854542206103114183643287210038376467173912418054926700661491871120226774347403190172472498559895955381379360616314335972950181049541708374808369534907470975610080068034282362182642256383926210386639783821755591581163393469105893967406151922799822194764216691086369425315422778813097651430102475393186444183567806580935168319957909407390102423967207738045734538684098160575092546441072743252821701408114113196799302770437032434259155713787508989980293469238908081821295782430516161452520311312890239058323567354238699268362030401712933304615541746227181856690988748717671118416164164926076904840742135534143968854418622714803899405012730705348955221559410287510196262763757547097745431525952071460210172470459783883768148531771671182386778645230547464662694767672820806718101294703596341392467031115757447328570966852263170216428103484758003104548193939617863391147586116672727055374685301036761100500582362349251298982647280621872162543801379560415200714193148129006818783745993330146938530275010574456601033425487818070534274568232200891125065272011293398739297457075263229744552421073861045805063896117304068229914993216905322859231068079111393544502950673131430215884910262189888510209899804928158188470085889858393492754123625401123484518875458954367423199665819375699598882196039141098308032360681451756181802925812792119679436657729672954011827854287771670477922969416240553627957865690128978498027447189680897561768967661469721252216353517835955332616180478738371221393649079347200652512649551328518774698621551293150894485918978136317626786972216036405144759696337116731647805579026880367811073964433933972836162958326805174565318719860577670264049322210705650466538161034540248106859605557045725372081839408480836798115827558036133777620798629228834047610824385108647257721035671796158424586115214678170877607068436631507560249065151532266228052449583900224495654211475219026836336445255856392252774905502426207437906036475378676046473860912274644942235753609919766710379869431734593326067439876045726905963427245924659245843466051319076539306171739005054792532558518028923290111520858824248326001175890618390495968080848224537148193453275658638795768270537599788735809915217819593967761082512537399734561243880144265413711018225299426930683992530902159738547991668310269739104878066314956494768961414852544244267343146667043109011598411520995597504568727402843566097384887059849747993749173030384953083175138880020584379619440899218692828454966829068501561276210426939036011437675394877478897321355545325351283604484252065076290295795540681399439496856956055584675776880470665078857102911644959684407202211453382954628805865739339619558334880871242017395924300542547243280270892602820000999615006298093223414515750834839676372264656034040542877795230426854237917883785419350316112816589138651323570893678001767395638352196440239173474146392121283107355612306233898084340144524219716552703394491745995576640675412950741437704243322175287690956778964516125159293129238787850847856483060889524346642173936054386582447464521458535246934595632206631139012071871040463875163313422055787478012416998791116851597607265382812300162343249695715968181264705329296622137523852758434906893182738479943952741348891699314018907706060892298286542389240418312699828422065695461517500046115062675794549133505331593920881720006730331443832406013562827766496079944355617991223768862241295306204992049595239044083200132831793737497133563679668831595123901059050537855820223787543136772255830963537814672749439725033738778088926711976986277846621159062077268456729335961697466209030924442633027899765374271029925945446678950125909968596322708444676757649910964434346356207923954627246884557900009466662786448959743644258181955846819215034043683972772667353172202376538672639570898129564987493043563805878363482922067705699989923378387530615603720215598731606765052075206487214653134783784101152152051556547314435350602420557710437798602005349126453823985557518929036785474438673378841730945862129938672428475880764963582188955482784340709376629782585923977374132450821784023124405951740638803479583281124306590257750828415877775684027354553945663955963483666685930391410206488988623064155724599507855303548797189105979843804589258821951116847402805373680412015149127702478074488399171295687978704444690352059304289025478076361460949909788046618347719638346876137301587609833150178821415726904079437525984938216169065504082243848407060098653505456105875001281871807024520125821610832170553070407845261878715932027431023266390500294553458915098321656702223804900900310743113641453616733217922719833584876823761832265950642926673247766004877361498096689389978605735430329230914887681111308135465431907188128029103117190621654257451639599699896220176706168264735361153969728679839583570876691047363427417595936444069053204162837989844921039322733053351973432945872072897787980282253277511505149955916834144422476351428566527464271028916488355728780048311359530645416489491443743164563118554315597359725024860822375867767071069732336342528661321808682568339616569700559915998603110363293420326447710530115326914971046551244609811005462909283041094421877493666041679173921766763811306912732896076129897130427187874159493226411255048638989278586460067093900268304494375523967925334797446302257246559413656251284267621143524175644724883290095839640806305697200489998346866563143254924765912359911486488845031432644619262284313687123329869181666284797557956227265362213874001641857731835754121549955067539255137822582330955530549676716060212378537160703714409536947301833484446238363453625898311647025428301649911039815961135733111889440385570380051947198422491629349993658398948420625854869352032261149656579343392238318959443289065351166639599958382509790886112583727909620285268447558300730542297919309823771145781241434872665538584422711278933557225080612786793634743689120595447653940514978628420289666750868144310225002019678039112128043216279223312168386703991673264926085595918877290381596101729800776975459713014170647209899505618317299912044841279756424252961546067189354665016927054859586809695700164378378364162075734651636653550350527194867215343576555725236062409849271322064299258777641088063253905164135373419587881031405440559452744375476729146696407441710952956629773328235998974842751078586553030915486261783977752528179691381303317942388194999358248073520298861947296015773611065953522564306737942649544983233011829275896633218805406242277223839521611593191673871920918142091279699788241285938524961323021663444884040127777355070937742173730708256263105726247972515036189423665918702281522226075122667830715958812249838956721521475596611796705883805435594725995842471559434073081384128194607313969783188059952318633911271052870748689611466264934026211747948286637820012037026472543130105715064190270508483100301643551589911311851215587597664505343953489439068403389954058227261837452583262690405730504810362396302814203114859507219159015568480625842392586883658606653839620348850563884718257912909682477458037943826959161993103154509471582369011308769846994532133430674717455812462582306991929692847040696358005421570808527093023282117519353877748789981756832510725839654493671784057012670666306569149000211621659064082680762906745660449412087417779415920420814599853526277957474038587064336615455525787298866904618266148982126767937992998287045077892963814662707127113826971869554864113267977494473998540026092215710053616157663713084293899578137343583890321976561909215102587351612708042614417845756942219955927601292534544458583029245461057217425205753071480812236045758297263514061348939567991962116495972383099930785358644049847559680268380551234189807765157656316140618679242805908971057142798374146787166898000255362139364156516764250672369806875323090730333123157459403822079200494573716669709848220597918218331347430884081308926939373008052626249883489529995766056720621809481334466127952093737707734368971887462271297543804595273668304364037343131146170277301718735728868702964631724427976011528459474237805043157851420880590644796004918547297619840785957490083773939650513467843402079765525416135208450793666480096113864135098633327380790928204934948276263387347781679098589351253176040055693712511269819145888196141221597426358803502030311875646323616238748067262172056088613838034951996327513620337022769424111637099843172026410555258798544586587998447294391688938915115278615722123844983107658792012718417568479017707823894566647997900335493416085113519219375752098324174672471086487904655938528463525478816744945214750424518667894356523911986780223668544950190906861627363157120187584239077932877726240811318579089950143304482853858861126379491721921266639171290253207027809591313715396541647277942922595958202746127260325389240070751288059000315781469745404530866880299293482687050113560391800087746819573244296850136793209119085789101843254287306151157980611858187094647044454576217708057251397707311615071789853941435774008517106074396573306516030835876834200421180817130998801641601467700392961034042652807728510661221241954641200014463851309793320212228132867967177386559324055117020084795159136204326433417945811073374519116075006166881994917382366764810632116825461343555953408687464561767080465284220045853552514383958224523723181196042751274473667791438058322951093636583427465504740585649528701531293188732050882951959362642554360854328477871188859147541129253105640532467637520831186905041186069758330727027359594497178121819101010728125620425214312087415780366927889385200345073942818633302866288233378893465985720683762323348968434341422640054855636015619752220097291004575324011227042563650022470884971617277244378609065870260075668570931708820153157646999345761615033445808983785972284379150677292081479716948635724794941250741976239603789686693474682687805335987621048767892726265084106121480937248915256022204448954990210772334814396618100182694806623667357441232474633650610100200176898731132553819668833326791800701397275699053197859394005364503373822993593666079657215768557478602872500014701177305709348526397801549137291286779521585307921155900689525231605345537446559998555802679603820156138241465270127139543851920127901409456424251555931436329261750352246377448791821338981695219369408816022425869577925143702917380191292721101689500474184506176092109709979512631372231446627381943214932810210588674902089772902344924254766731690860252970086005365140799727824582855997530550995848740437233512266145947607944925740423390079936900750175727751278756076217504044895390902227779891488618501419736613223459146634029005560988033896954349866072196421899278898674576418549744754024923169303453847535268270242627923864216596839746061231615178908367007478235572473794927211503449154949070014331363156543586216836496702668225907377082554192777886909837856447930014508415619055348019405935724006709769639400088169363984341037690761011681411966267488458890144960954192678710180234998276608186912270300038076443092941599195538158334299349477391784693445708889823962069682383350932661055534523315222668005824695494190719641717522619423439105942692802104196096519718387472560771602968849662606193723696125410767284178323453397248546825288192352575147620249116085937233480830643120016426396597881121788644261748453386104884806090962400443807222578326498759751142691753700367291601495191575926652629558401629519123330701688182015154049093555247058728741083039307084979856202261247108575353040682913867694038631289273090027811692317922886739468839057440362302772534233135360980142073677104734758291720529238657922984850621619394737383765163138454466700559274835629072693285273953851496595266728236573724096050134544883670293324209229975164114530566104346865071507873216427785476320914767865827772567504554639361563420621306860799911315458050535666334511404095186481219711265912435500575424823222250060996204704233591402491719892675686166554985470868045180677620615525692110668256863994901508086175020438147521250732083992602676414414145656673258834661800860754071411846834577331280558332508970390436045800928944973177744338427755199680473382460736426219809302730971167621667139482969158506985581137312532691055362642956201732079606734890107083561395010703656940689481535937870467571350456321603936332333672450276849408134398287883479374494841957330174852817995890196130603914486919625520658847372630339553265193585535975334656485511766130047981265760185863105214022812981136608462830987477282957415096290695926126628234812212899583667952432727659469469916943512630090941420643101023769362362953892651911881115614311641896046800369385102847952595306604209210171511618329429611512428701369935879411864084362598651886123363859432824744185507256081119880385648358213891120543373542582822743620914548271985724713381180293454364525305533650503810306922678900669139391037159009492980192739501709637955437594275699283335879179143025064285914729981792018926269501180087330550273434789517144194521361840060658137306647555269882929369456646454597605470202522262803245343871268003348127334675997326435728483377395057435050690084780552476493903486494732723601628885849810711176726285943906339498991531115758808734335578114757917907316079848510346953677708144810626709736776734453223818039686228505994346524133447033654435538533626772690196763694664370155517466297059842415292020527383352164186515644760604363353250336158789092336324266640966048317867302120982105057879772181026941832796791876720231341621788076841976480105827791446360841153259527290093132190012147962773323722892737689917206506989144696284723467796857763634936691321558311931041284382006791082635279215723169105824543795161172007357506263620514262554171911392146018610173773262129319044729949152943038111844526115780891282723572910914554893341355085323471727456928622656151893613607976439270984600099839211102240783623053977940029555778737233434679849654382874966292532115560255088731598132698103450575342790118073039788558833941832779924601809171889848147382995962759578692686278778495604803389358320631146095633675718331258723375787066412485209880237983394971612094897514506179168730682404825169629187385531081220120583327515379122911465108405339427260160808733466467619374258365207639736500376120313378853546814666359575635854802036034419444264735458389473102667800840128662542736558121656577144875324758647393837494732755113528013061359072563238928461823098556522274151938343982430274621095037902766328198971192072977646026032661584510875807665392263575917522586821822220271985499048694117741929245613180007767600881812083829476065157592757136073524862280872289671381123234198413422318289179773165905605211439156915754000688574422305519464563385924064629298816498351562317641957200262081681411111320340577415441291989709733432284134138058663424477164496454890262183992901488694268387299553951328779022431231548156398114620737752012352307068922807296046825530336592706491835680878261226515494348850495091489396829279953107429013231694288334310581798350981520619652149445684119073095594400362021401769519917640993423809466458293464388827669626956548460832571478259012572343168483184500470017408430563511434137785512167784422152058054958399475620506110330400792103831836304585612008276375628968317789866667099934250914524616341372745381299322453091388222448963022497104811173085233808121641558759041405731219657883784246418432282711964495902956844011224739607728703803285125662249561736822324392111180090143098756186929512497491983960551869974576609432724755069120907735515924043354164631143983203396630875143324152351955183245076564951326986089190811033228458709940519982734966854628716718449438652777363394230807250869568851414522542152561883058928459670874765910559627899886241931751264632485070110020528938483379707568805285550980246039401706283054292160729962057554330620009832758341385099136430349816341207548658481322969436427264680438412252913648342682745399359399932430258566062829987659436286719706870113545885098485918819406712197914767024787700844072455358047434865833772465304676408524616770825005784491314422759968513783024836541885989091228532348392780259384550237685245213656795409145252082573716283811497831166896699247111869534555398103259946956136783646837533806121964249682053795200814948238732497199063516994458943958764252871061520315457513475551287472128441636983250726961812311093740381518099525047936738360870048353639974413673243437389414714548735006133369366966580504437550596521534558092250763549388188020132959315865467856112235624905259582322703184001488940075584002942470492531841909265401472053512465754183469706389742238502334745851679586799189861796761213269133913975605240607835001640852440409816960911123565162527731941996065595550407829709394595104030361063208108963551320085641917404271570681474511946996604883548357241546676324876451503454170324848989661290815604327535645009915288706458563515102691729885334783954541003843025457703831895289168624184364415962083107023918371718279267465471856337130901462655962230784847387421912609565615033684732936723943451881612038941835982436269439397910348878581118813152061779453818387112214123054475233677235282238680095679535021056689866823698378708433978543825745550183319554944635970204600535658616380434276503023065305091532591946806706549804703908628557465824646202328273367702857056739677320870890183125714334393753539046446009922316280175652759699027071096796526052057585265395462894183868505121509577021809964164737386935413150885970390057374954645068407885754128107070258137196207354357425599569685305681490212506874287164960535583136730996435923359377366680231919812450459159119240669486840490340176932882160925064817443442150256720661745473058745965767112759983442562867167165281281097996844940554297315787624960780702854027078198423620710198959114185579089809529270201431090635180418944532150775737847505361758170291283867861813574481835445809215917996519751403662388013377349527307534765321256014247827319729752861285724849200616478057093135529910792452172086028608506616588920425846996471625789841482445061801895455065035804517493287581356440807337842846322681987225360609493913670455319897633230352706512913168159869462138170055763001005653908562100531381634066984912921418793450361824029660167255964312622609104178892007252233564664924082958450395876967520350359053382458515295952089649461796249747529056956623257909740512192532284041449389692666482200234012405409025615125793017942696433849643558002163531783615455624975879931253669074414366865760967002089144791066345724355710583987186075094197420375712937725544750231895114018990678628823854779060953790061391847687677884437041045720408970027722810380365750066334955633308546005785819163299576630310497454693053982371834520182667743061385338389194839669452006950891752798739373738071510934586705142472828580665886877793627548183230566102783095417176661659280486614709854064133252072848910542134630222098163248252659206512603391415320551719749983304875122385442065269764010570251148907011017572494885787544418439111123192988788647096249915968296539876281223521407445775529255330907383439984136401795764680360515704134253601275234007382008959348373212092851750720658105177757362704102331765725512073854086778760534298228632557112756245569371825236166293406789179048652890760488378682721844236721530446704616524720850306419298743584328654432218603132540222217155492270933822280746595554420705324606031730850533195460027500593443157159407203242802247115883950990096553774097606388274236733162212562124764689522752833341594444243743136810741616801344093361710043548185921133299534394066350847037579426265434017655856335837799725418780572849175131618343721309866275464011996939765833182469089708182049422621127159985932143147510557516754116025800853201616252319495688924240113797853614537508395334321719628763559863157963419489535018618678914707703445308436810820474885017455493120027406902673344718775588315425833779980515035416972287364780444229949324369150655885748870499655775931690859547859561778049760470777914716561676889123251871807653338415718830165443576108973281014884161690598987207277251627680019691951658694681452779609446671217151389386452955134733053039367809638068932900852240487223158290618824830419629436123680352788997452559486730111110941759493385124129105357195264158932174888203731453081460219335333356567284677350013258317602385135180184451201609814103901929469126831292573705886023752070249944030997047098562971544846525127662465635844677357872137395230605925369326669801564334508161155824498174460176303479888292004379304141758090178399534777875816359425754770302753661994569877161897115413241615828027755371997179154678823311778055389776770419551921326552083578231792421898642384068378036976220682844764411735831682421049545786893238317863822675477487560863996930819199352849806607916647938323597571957671610531616300469456704052241382991585208283346688864950328849728356451803727871851022535525991510579299065660197104298311112048996556434443512286105368903968082358470418903980112859197660371568644611505750497287246775380756714697732962301308851144965086057191543237481038788671471517005441113767916021408961558268430668901297983699233972384074962663992585165778478732033641872562190061580564306349115473539503363751418108862753677252263269216935278095214025872774098665164743168726751329346600240008094115330735776855725889599136829984217672999710974489224485684630184145509799082272157421841096353211762503209839976614395905300792170130058153595064691562945927218387767912031987074208640171916571965297997339959112588811386112461019740669100838432917256465076166489334827189290533103813620829153913930307816673831920642996325025606002114546474617224623164749298284183995290999555904349912601613035354912700211361262509087742256609879621044422253125832216660674542734420142276326861463066868227133564643535038952952314998278822743633984919620883329792991158843209671246778502893622922267708481619701855337377361298591821677020035774032614391759244922235962645884490252398491815451935467107455186387560573545584733983042111342273918384997151516431913410646433559612641395936948429832438577157061081650170112859178870379925683574912564337375072863256724289196479811446869099472839715265349264628840717926878751685874983003005433817678984201066608692190653170337135048083337878810293905690990606149072193389030935528489109223399532682828463266204477765982123936947805557992273309673665886609582723558322961469764011069117407529429480723013498642914269766014520288322734360441792577404481071150166756840719026352308253037024101919331067853770711024606529381066063467511628865279829502782670067418247690748646731673035527436604338256949474003517249026579025361830037003393771350255021426564025140470738583385964713351904259883249340703131469563350854820579718115541388313584836695021819334433399927614891255316396980935762215090244195302417418383186062817232633042414226790753551014272879580265756220095224712054398842238759868473623285270795684360144935475370540000549989677192698178526760389943686104487847543084646024679596931381395554816782824800792346176316055183110623210867722591100839094940807767054494124921868677400936088125525841327121978496076584459873707644661728815139562894416037585784085006908094603996360843645413817380654540328650460076424630151256513353281470714152898880110651328404513028067000835704749975938853554781746724251821718170679098553859363538253482576308509514701837958868080115287422614295081269008505636302556622969569390382796521827548500761296973018526577271203141202038494843865163517657128049955918717179393222805314423503399057952022659171698916410055672317219823475080361348653496388471796055663303881691666259606678947608634323996853013631542321392742761113688087094610582390298091878899543441563545819196495027753701068960811829613468926208881568092237502548294757691282311518469729268585764502136963135994583165024085443187899419525956313058240399860520927844468904320097549944222403839137340364534522672826519916347200344468275181976742920243349016248942810590852460136071724627542479533040417608110982175996956366934910265610507274151327214110924007089053062513493136320263070020970091272493097807044529864308822143459753318228380604348484153907000472700057163407790953061013969688229728308244264838169484397775728614852570641708079170183031307028069717740750239166056179559226973435770604332433653683643925330977052786896208888932991603578657935079850505852768641112502702338826106022704248858388664482273598655134746076615522752094288955823229805487369885825010275565716323422547036859517746315562961938091995126105822693599848688306153225938953416998074619247783692663332795435840295424775851129260987481366753410914637732516173045017305519689491864601929577079619574570506986951842623838473242720550191190213730390101830065044458757276338374812385445956955106123013820063092916702028989989423069474337676505040032573775976381710528652726926534474469263938293796831354716749177224684666929768217755818887510634649960599888235821098370444668181575602521045657813817928175309521071473785438260502869241842265884350354369369571650764260416359509679018072077689464229309738460762217797697170769521289106297583798673966997321760503150743473778658704911227167858415796052710836593143262401537182722613035646612651695267217232328466892229446194937694066073316206016988625941846219651532877067080044663315023809839107021635103847567033383372001953003626653207298382010957841672475498838859875904189012547161946215676731525670591537775118333649414078142647994823981764117301142918950947028318929935363752093831572576748989447441357660608304013499151888389871790063404576709035043254663116405283356925985492517300773073964938729568376129089540625228321225672576815518997890936490441895681891489994102846059789893150317209586955325950429560052724583707503714623921135217700961047482235530430589719904081155626808757920619131588321399559541851308294666335163233003485409033300372868696988368915382508077797074438915176702187337209066835736658029966674267436029300799425851566357050731736154915008324262200873911895061925994179654932623893228655260559142892949441856415299186461553593199848822758010106932121039888196848408305979286750881668774778146136589065447985959698770184527715716467843025830378074687340699152754068889419930879713509632670144835449602726608895467786019176563435118645955255945883386034193103801454908142801781293655985793963729103705403716811844574811241118773622654427484746273048258654869175664460238171766932063041219567321364731139245664005269784943139030931533914665617318078886431379111052185977780281722432300754884902931614956412147750310489945351618733677637561117994530921124786406407409735852238882738184902737872716910521435323177085510325878091722542759015003643970685749691149737552039995479513782523068017025884457045016045485426124414590170652757245260526894335080039980754149528930819020043814748897650532566097449501075530425097107176889453470529175926064968124486722034381830436207218355511575059102494566380786490144036485116113653409525277636074084380914393752274961783518342540685153825779408412252047970860438520275690309508128131041326948868416997695599499854640362239990366256086165288340012351755422828141734728978156270058777814384915689954219678650832402597184374206315158975944798749136800648827168051221772104576392204100064380647294114526940907635757233071653834457108089799053639419736037531067924732356853176501638165507110865166749810365631925818039063279231886315644023431058966952212553877498334083886973443754486067595001217187403830805422841155709393658065848478242520472960160003265297608885396660221773420862956604586001399539737457442522624263032970141915361627514786558714047690640035673047540093523761893258078839388731687963985896812630770983948587882455988540978013452968768577429541969875367302495025964878885067216585514842346955487164621775771394976779051062106233556033174702137102783172470022528002495724164712897269492045512027062695118017856915571485546965496277464289773644073054384379136259605610963589318178436864754140564555888031659472858082272312892700266734369734946457030094256807637693539107548250754267268585845277724085450421579424815488463522180760858002914981941887878059181445531223575954756982116577187522240069294070932171182154250321138373072344856934145692331720181314878058888960304214703381503465838350021593552420723613035113952461376505823915660227328980819432020177621036206394340644540086485511123748578760890818967388350416458788388477161397269453122990601638857298453964678400055121126668058627427083063303643459304884326024872391278386245762930864520946545764879296334131188780783846501063658413158044955873973915473854189181505356836818756352260215121155842356241949781114523152957764099543404635696752528184228503875939503663136118955294559738594996835718418135976353032783705127035995149338029925847791063758824697846928002901191780931895007565181491596103775334909355777049786019955385681588563580331664224641735992243339751305272154801555581308962492451442569334407761654505987605844503306328471917722304462843848044065179314003544829680658808359929942162027445790754531085645738239860575205872467611348672556156500690798462812823692845601312642590343569349084515556793418544203720711769807466434636544924135398217673956760129457413170978463070702623341927876170155591373798546498658705974969517621936136192631603651738066091546927369411640559737519560173763307315709089495025764717319479655070464408598452447202519012194701590235446194583287452233650939956082834935996302616998900574996970477660984366383176088156334603339557624920793985681657049324930741864190486633000257546994892935830808777428202458496597753172712165227199240515076969197591214991333008892452724940983745968802158083392637706094079596606935023230221392429218335664927918028609811125862271019640862162084647055419538733004788746911224676604280967258826083069026648473441269336975119346364284719465411202065547806323351611775173341608128708272228925018385818111358878124476708391086645317519404552680584226469041539680225983057749389728263190853782167376045063516337070919623791790965942758464352525103882235871338501584544755988733052436688505497207114268911962723131190685736571391108623618228915145540807534368376160568314269920456750011150751224870905906687592000065222558573835497458497180050216997978528990210908397113344346329597923015729925649748234947839565146357339447935844578904564821351984149751918789391354837149376753885772533317467762468292837949541722597944391462376564181983813081243624520876325706107289458920969694747127926063398559127029589661696196977103524272837743683657183927681785748249648473422469822231738656184898707376068457514204396759564548062779652711671236522102354145800492959095794296391126096021187655781778595000102439095648512111825150852648934142094477818361802943716915623267540010768002948463747914369518822947336955839637030571901047540487965799454302072013374411875275506605815072285143962265197278542488697307100212489079763342474210173187323775164953128686101052715490077260462768141742358638004204540442578250710945042355095008767894331926462894756884180013329617127155706213851984185562190563045019118498360380357902968781025687803491293616215316859877564415454108937488584811130332216470929751856050591519977071278421801180077208531023115678716316729843172216714630175739239246885860813260227081047720989278178282196256193756452584552944954264663210304779274712261434613572324026934233083758383217654017615325017870070889789321604800856001966579737346692615073565660553198205169057154769054811354436095564410958488191836803876796934100402277263387823639538213162416809240258528722294461296278418555612225779866774310365888298461773336739677748232189865207459764882919818032912481347121545346389324526230145896159748809004531346436608212826888078934525787712703508638062629209122500171095834441014224260920934807739090099939178323008139491118106114253620854774244609810034468065350815585021469685200658379638723145190450638559867894196592222431640503779199135377316925946097437794861583141749556118085606688090700030074426411385445465886077782222259384914856327705771747700604265886412282957032985007522511334444749384196943067132400834499798766270326215244760641458417408629663926424469366702727218834689178092555673092172152125310223550356377522493622638315882787619499720413962663511455334331378185825278830760193907185687289376227742970390146252702549612083121314866186513616772294500837757868545317338916932602441330521731510426375773923589673353729247008838061903403016604428260601985330422927927692319046770701043935332561682975916857487851995691647781001102797657576408203975617719796343273842257413217842416988564928771615152604564723030593716097419519801719478291381422957118713659199030511944395698936440948376247139772695427651321045205128971279275625934177710444307741177923773513768079264997962711078679426067473778929904934655133183178276240422224499566709244263570331238856120543103262588138182062615642508257926930702329352125816513875270007239508311931162365590717343500750824834084268165098514509286197199823425040368515449637965576380255195040907102600078936763900374965728343793498977744541344555386092852438979411675452627750410991631717813804611378777797478881755674300301133466284702636472951754269362549478515059839847551354128326309507420570318571115183694027539110922409514262469039069629315302594459975556990113057633514519177201165171885759238364552375934281835122857357873612403455749200372494971216656273117568346759403873833634344658452259785349582360281014639248642012318802617900722126050327649012344175257027765275369021718868126458435983929435547087052540344397768277908375406094516459601299842447626814645795088382444842227019679569615633509643649992368095940779327834664303050478498139376415005430277281775244824838173053440294780774615216927634547916754252567810523759973651806473332556703253553741674869059577411031926165540205545299691767080783117173158307656410995569356858559625789852084761823901850206867851413262653734469253984717676055176730006674016866669976895976610562784517015740141104726847929752179041050642958413816233023742314021818650621378366000981398884949867047858029721243840520223166585812330021613397413780666273033196512784217560984629473978750365663036420701297556380268958956977296557142310893771579674360291840947760507163865620368141139957642988925141932936378320621293979125982354185902604950099589513789560681717479510592404287281247517720270931202141157916817474490074470046190157069365385964488559243435980229189361246174180946536031600564044948316333376316042164926562803771743676540799425631071344353293150580888949578077617169368017929432418472369665794436776374912028509986531864544221203328287935892329648530960676626575853187934365379259466489429859197688483725591595596633649481609442137367580348686532385803700475290694967130333526093608698738359885032003435503402209852316323729411434181572031931058447196857519033362583864036373962211070701275330736349025393362263401484074727749275530862011442160439365461819825037143390072097587820063815091409312793000816371022800494117265916507008299638391573096299569360137896908765997785723810424875512517582521257518713119065260679247526211964201380229979653255821849521887796924183946112341950561503561938938156465713962770200301030510566028135319513085505623208749896806539360872373706217724140954187289268501650450434150525671754362418591500280053886858068903943498026317888869022321238354855973763774002610902651413271773301641025168592963063492203617452155147785836447009203542011558710281271973185660530670325332542344848209683694879077751892471673490449443943388867366471279038242184926685377422292025799922767770399498073857604464968001391671962852572304402711229451293876685752015914993019588808915450206485307576880565786347604376856227015647785671691456069185868285055203347177736703405133320597582346812025069747320987902340617242154977045070457304735685100376568215753697849801998161486308653201809405655205976511178765744832879466604710962007957354916565249047480086991764651786744420315061458007294570928475583588255747296321997669563959064910092891336952454892187028414517711546501345109227523415456114460332287314073666129305705370062933487884210386976588263137427114307806066032624233341977669886896670491995925702435708366197384722829528889076107485603581632419001906447388691277902614460624170193768141723610455794993534566215129180551008322197130335894097963631264870318932808084654585318174909656057289964184588039397520050439994352709549644849150240159324923951645445872393665517538190132330320688379605646924379054907670737004727797723509874661183627346410514013231548764268196769730516291219867024137533469289412732140026079679653652028510308745320628072133089880591554233023371672901549877459901739619055769861903068315555306051879115782493276994530170223777855240586461554491060971906088689497585698278453505830925707189995834790492801494184815382998996303731795675961610484037201880388672049927106338747749847880141285141536931139445392140155909117851255879642382494865282596447888777707885091230968092709276471625088422205056545373399717518719745192405828255660522073204380032625842542858960263148385162781163802542311338303432650101766071118640415887135821478438091658403982518273222146645859797847184706005008809674342337416775065568400428209860706044500241147004905025945558431847783475668271710895179414039793301837784975907254344301167933290043281039970934754916494105293697406566496213550298559602678591926876432350573711672330793539425242922039390581321303474628926076373365824868199898795426001574032799169467177713383516096433466981135036533763469260007627586293221428568339953612768529962534973862725433717516826774219605222203258271514544216647270695740062331467820484623454434934013624798095637607307702960200400522738378308022120853919571018016436450079702839227229631051726789141724727614173805525376066927414389502906105314035011421814166901425834930614613058745456102691956283020073961167994952322517528386003243947573856156367684347735086144354263619719993149456823052338363835888539307507476904429443502532478264625203763128979334061200385143429337620454271969930930843752313952650924658062608865301170939257643833652885473829743745585482721172929138763144064839670427931498605429850212017568725749517671671000259251933674805481352447936156441033656901143247850127890995455899794245814827583397612993918620497428546905760695984797493203231500379936853675728227601456146273312059653642876069756257665282440426634411671431657556964123702694998094236334116728224418191055689719632078950205415273555984053246456613745762514950106777214899559456544764697914385030659105886876118698929082793339038279860220880513360039643201137891187309608415704558174286029294972478631343093216209433801986472452447463526896039833344215439046036794018395585293179079179123604933596722561101032003564461252342182960840167879973462067798359330702308657280528640638284751125325709410934126852057394592192885463328805945493756554880376280414506442260982812084069973554430615661716056645867169478113049714455313522041574359672719788577824976403248469947021939464825527509220358084086057282021368967204056073247193130891142851132738622276727542858347073597345180282329741520527571345331877827201688784268756767113352938477049743112398798872094513220598036538504582055095574172075204501476958166873255191078154955558774127113742287565757541847310986545684951154064983601000188579849343028364362770819595784905772769193608784996136365083238661200750089689437605788406046857821674103535315372056049681866554663861204579351849056263075439700899396550741623969195641239349926972489673314645210432783978286152849084616228906457509742005896108932105315276424994724681700820993889426961454552168905835095667260755652829625088419407558202692199685585366052376791295030491786924898025507962201996692127012477825339665936021798399268260572021307544985596842967899013563458957348214529459996593832162382286693272687528066604406856526576580828892214441403509524962388879688701850799236747909425097514470310176391452316265456679732782931234156684542112234968954010747219333856097808459869262599154357503086973240702615515473073215165413348208489656383413898630371710727591016231024674592678208075553253126987634835870225590472867822364391789879609659633690106557280214031011244751661953282056397130862784422382528521092620807457909677322006368991023950643949351995461504008390508514876313426128740837652638626791972975323442645842771213996122782864301264477112935370741867320708214788326857673993411233302984203862560420023994430056977789272773605696379237782406078734291023704391813148578602601481102880206730619196728665687799330500177962066035814882518481449061352373865188492830073350100526962346649294697138872812950837105345286484546969280427980268055120090548634687091676391852578457180794321026018482178107511592953215885961911334782354592409612847900952732557795069478993036652095175092764937958346968311572769929882939804597084372567514984411478242261668694869365223452824681532531250890957454426528556695069210209375883757918990868065925622662779393363105364568015126490854992211153233814908558952158792683282403302178053442436751156967289468953204604829471333663269359974536441884203226507161243465417242221197909869856359011240090118716141372667377112042464715177048599043398744975196834789142425196900551219059827356681441141635017612617581279845046840633868286576352014875715201146367254459190351197049313065281263157218830020010148923000067521907660809837682639899550979593841189960224201973937006094038889061467499354032227944097604985851545669703513979713025382148523144716354619877354382384797434884257046932544414673264228322878287990866547665756913421194453309280799329867380919987069885400922429585454952595598418232354740352825006644462298940040868846568966315748282205490695299349291855049867348726074226758156420232362256987117138040642007255860278829857499652132761037561940154677028853468565270434796396508407386544023043493526916093993610382985779841436501320028205192203782707126500106953684276014231830572231998418960788231317784775636054613354120901502366181639748760575578157628105597160736683163214609516808027137599392883180383424704730456117726114966703098519132455886284656519310612368198370278461792597153216038102470168268086979505417817333654146752935059983005301014961766741201713896666624516565606506255674920158539913024990260923033521105898377754635133200804697094405845740524523510185927570464809554527197600063430933972988120547865515088225977721277468726634013241262375755939628298944073659932733320287849965564713497992869950812171798591812809450134510149747783767572571204040551851783816325437147744092918441468532639661975854746018459435877668861323118046773149292030095024686849161776604047230250609411062928332367147998479882084099115670438133047789021118845646264706514201057941920163894316050267529845904240992867410422768093957110097597491817250841463014458150161068035264960417278226276550563110490493885730619774270422548956040407763114903957069404288520229687707262100448584103800851284067876821748998809992521220272390962468511139905589955098595848949228213776341767811957576854081591403418896371854666520282500332355643968269985075440229277769145579956857768343568906863088821425573728890262817802143116880642054235089508688001614828476177436818274780008872856957734975232764275835331242050479971169292112211664180346968360920373410892365581860364815375850609841051957387702562718982177630239981586689258263611349978911244002986339609434690049726066039955551152391466372313443189838148350226061989325313387472776167294556170186319118260370776763960667167559252686151800962468029596406970535027007187834792381469336484244881825592557947955736651730569922463039040857397253382923712667012578668482300298867370920525145223125564867630513184754456507847685868021301525114230693571046782993153961158630921879042493361053918384776489136542151761080926375586811523692545961336098534693463075288438306749717889118986340585336870031973682873562050061842088773368273201886710996426309022468210459244222726406231088452296621109502424855728124936208575282535107306832026841263418568032246247290994065767453894966608727728715939413492867784493635932108967678488857892368882323343755455438228026473715246171670091021320579207540497356486937066985954698954204989633850142969233353728152562260021030980671322481082514339432848432273996927651746125398444504125345186140493373983358074598445508607553470238500711597895260428766936380706945635680962669327436410248725897855354513899243157013724461340463621293466576791498056165374889895068744240169364647412053640986639980652976743528354215735382514502105976367942979021708583707791753026196688598530339927368020489243266631546017037886995317633881180842217199877984831691497252379772249616670014804547780690346969160120031619059730927336926447616333741995498330211274331788440794831611768676164330959390371038026522456651380755113710053046674063826126879307519763160066402545674375931841548869895868074801588645117907200250412983796618436219064203931159855271757707745561800853831966321472245521790827987370961189513778479965601676079817000663913720646933621081795352667134838050404176152315590741468779936296254050068760663556006323211541862113604554134130024945055136410964047440189993658359625113206361467003418998083802128337067685875545281429131724990001292046216049417589771168102070929842499073011762423370063593224681519960135189348395543623990726948634457302031171054265129937429638358193665706317176764375335949249376429219114710643779778361815435972089455403182113512429412225759435548498641330623308987321999489021025584861630366604218359704189871408846467855662028107005647185867086568614225872863498736855195950753028330074033996000601518751900777662814656951431107585669722926003424809391198551051474389579447328679367050216407758990111308525157650604358937483394798727880512158013056060299298316436948624708811073864394458304256115607147197230071187260274363999124974239282379590592916596169079442404247826355135320318136044899186975389219737932093110129985636087335414980061452325932366890661379826563782766960706129924880739337686756825204349724393129502266244152461714197094040893114453422203161941676141622303672904844820032214086884016466823465332575155294332379128133467244635009040016298410530333121126400185118157265141053197600333330191942847581218878703073751561138797007489934491167003692598240194998730273866574718407880412514170629383611423945690179981295243362764818966639980347571616925418267093539790125247586714449849955065468294380580624873246590538965942005712335528431830997151478955040186158933929855425538460547067230544472547453057165886869693815725505105827606534267092549111249902337489327643932620915097653959869981992840345927664381391926143819164302152273551175748932124552055801379145068366971208786770171026219221433669493044558440278034294125041059575671191721062984150029116058587472842735837318675392974274296133088688310662985724412574538575769239583710954227455605697235488079585608953729714047334083375349223807357441588740758718730313920371673793464958006188797109633497399456400315511528045605694265101658066158833998995877281889100742746140011661369614285580662286901844271268119503149707116480561647528145195345644999498621695650859897884073411009758107353741851920571854413050700929705790879505668321438977844319761751598895835684411007126607819968068046345716244976501599845759443054856705918353405379512656399933022909922851238024670306005642023871174233069075692066849211477106811287331500095992523348304358263739871569509652133077238511049310783100409696100748609351260368937522102413128457955247539491064874751972630630366745506580949307669039579916708867203439788505499370484739406556130651463356953529195769872096124912508548093393678393577732377207800110110946432486137666054135442284125918075503380806234291000290148010252460525935703521724982499297084734105143254835588120427252760228166275826011650839595361984469863363972493037912322062669179172216611263281898558714283858021960360296242545850384289155122093413935352288040963484137217892835158339278027735133896192585523399650383571893962880002209460982318614570652414340992858019829184015167922998577998953515952079717851418825458534390438309437859879971732213517397588955464516766100493923408102014259083036691859056888372163722255978143525488190733965290774949813271331613213903091887805792480985506552148981689113341257392353053425070302113337139519695548939899126965443055664259375793056074942236475473685339736885897156409453934149418091905347856842802363616424769099757217626350774068760891134102033103114661548957396122961271853996671368969092327617908073216913358931381759763322541859910776690340910103462871103586726339134068562768409026591611621127950447382053055060625936405610715204086673381004377302161417925141566100256318542443408565341412641535426097957634072876344639876982928887929825980667691691530989912369874612187988445802735758724408878926628626171321892004505188909973693726834819310263308746172281950493312224722933278385292871009381834634437319184497174265272282789881250845397565773843238035166383109512782234590939473061613035027690893974764136868511873441019271952082904095962660945296530801768824451953798546278764111553021233038236290625981082668545870422660271341298750207617386756832784192739178863693178326693840312898450233942112093510065264266025659583418991464297429617746062687176779415806708258022425143820077332065496595946356357286681003845978677331336307244556484758081183070594485304135394261004458359605092255911104845806031123469029568043062592796046056467024693892239926010955821374231067075509824036685353845602969550199498889560615769371141478943623152722979927461485609452181948677035720833569860030024873625320906694409692309110982674264287360215599029614436030926925902778750982665431395675368647664069388882978817698456549225292393554071017217979990215202993494680463913823547800869008920443310877367858367074495307912393646975026715326978073602545233420777786508719806426393239451275153031255073467888356444297419293675588425534787786390429864409566038997310877135952168964514129488193819200734933603296389170448643157758502619916348118880482371125336220869672795689285472323715244740616450166721892691782630721847790875437193577101579354468036896545511765815098305776076242309839733077535967220347004291665115369362849894410690318213308356282163071481721644175935265672121364651435594256873333070783333402988557334148750165002876004960633377437307833834492249273520256557240268313775828659192908943778109088466383983284361656366317463059397439614539419261868930445249916818704294875004510906928069070464857000544304201843550665511182449630624166744392970829534012637858625920982230243559896570071974554637128805625794616519585923140107274173970729377482239712906458233873189917906124102636599121573104320260849103001569915918329162452920961978525915091919181532435563739900437342413884714176274138813492632475111316960583431425125072745411065309833738492181018032806424159019709184892559561211792280412488022131499470484960020400804241124413246687178642177295159432730527715810039147671312594673855309188499257885403998625489548840342745278537806414299405473602597995857385558573902567707433177453542168446481162894209422827722254669876242627461412297693910034110290999891983930042318101536306561928856947991473104859236430613194460054694108116098016201795333215180582649164345122109358946663551424827295830808677187384677117959566788909772536189773511519505362458547597812884699238002467432555253603361172328705659052532714869798855821081903348187946758499935062707271325161740240272593287438708415965312107849252760743529993132765730689496146489540264731692705143911668114058309844064970860215916817858729062659625862923406727762164237135576659005978673896949375639312941774916744985006803473963663912029771706775595204909832615859005052172582292904217207515812410139149940408462974406772788091904302624439920500119277111813083149930700076817520719266705004643372462773048308322053982469026004076066056483358760098090259136831556938008056718681350587126971673574272148731338182533787687736187314175138992666916325028072960350884054950507415031392303322323039560121778552055510321269276384683869918452298645412833479238401192005682312898531109614340460278743095393471652721705964088123900572811582077130599867062979957423281691761827571437643691283060867580779539052576558620222934035407272221567151764046068375700029558009875239153843712027152997435911324802238970953837849043761573257828234832368484714934964711718896050076630235667632030362746607383935364907447849109960522541155469667766988588712917663678825752092260383849808327509509516824603795948721714097002213931871072446450215626753434218872443810279820291841965933664008196751130197833239451221445604708498012956278370695196896778731511518000184496983091287747873577300740567991608792358131878794123931571053243506678837793458595742247747592096925676199461133411551211989332346160138939212194073687650862668282038993921509579093449638870573496516713690899967612136049866820068463641595817607230697478263072924108823895470285988813750367433928781733796281583224051349124655383346854153843386310115072535697595911451567660167533166969544050137221916442952539845403816522267336787986615277625372923961669286500796626758030751147288672586617776397556156014942137895209253369650405071641606504421773028421516062434547692386750880736026488988832122492166429066096910783504149780081382934503854088471519005611035068238225368174730415979072072241371699654901584021889731921233391644982957479433393230961656937288237034814351339819964671707527924948365318873466472097762084338176360788671287829327068719030270007027663695684428559036329453211645519131354773732274642816926342462219750454467080004526821405247697535477535748074259912127325344117818977373195394928478944980349446093021812271498331451019272726750334155010003022782964416073781243744340220654061260398343253442653246745883653015364075921921793646636894534050780580337681047748594516283267000577754833511025662641206740295215988605013634745998005013002180263291178023308080706501547028637284334757654812801528952116049691376741162345443293200825296099234735800465392062839355007931570429633365852209664095518869060963231439380856222078096108294446218782864092753114900665101096085740213467723381136162679949170756429598421915849310172388114080292393120216201620457032277155187683810201658637020035264417421027830221664986656541424149969351711301903862477572352042374755434465321077194260810535454574278463790570021603957455161940443261567375913035303484850251120501083510263545857743287778782135114114505586039898961179111980758904774655068615840475171016922492001733801463265418142220312200752494812632670655399448353812552268356535992215233449391318224071097622605329441504899492669751198206807513142145369015007792070906315758560741290679036309782027681818870314718496825390236852976061024923665538868644550633091625581165241509999986350432880727096560547421475245523885510664741200023991832068024387260981871141604151235603809903934791164071695664543304771805186771880710201764324104172356016542171863071797699286797667873527211208880797827368434958036583283538977672126482110961341380202502912971718880886863195194229145673988663200398814090929062132527663050077619134375416761068958382463145762727723977614907324043127931246575085290562475988212872576097452362022033574259410883863369485854276612953579807126562455837104532467595701535937485938200732994662873763505652452578481158445013328149028585073692860800671759282030135756033441059324091111544900732142054100045947071024195500715377620671279755839107481820523808507420331952159392359688808072392933373457613181921533256987235774849155427943911269882694073274825397754495214505565567817775850529662197192136464935426845078754556364557697970527021354512074516236382971964095589512224077034054643406186838776183052889353983926495828809299042861600232561975495117790110439583513744329933508667185253844648859417700216516096657198154715880766954289807765340153779408334243803846795989844328413288776565049361591611310259017182909113247880919705191395235555231006313775975030558803729175683194497641774728608690524278069183781270023599071776433326141805861354054070236688331725783479429777342915227861139930017035765665508714668644996792538901959477450950438031814011934294323546461000368964461787150443526673446397692834074958053735428040154333217536125881378422678054230055059877164335824146505544670701757498339345828013602132604183672159262911925595133855844007657686045766067023929225193928381388306744753903286475534062642621560586107158398304087683401561379786878502265322008305476031260094507322041224155146967080410705245761320400572547518434617866621449257305052672383004218361821943414248922346964860405795883831439241975289557805899491225637949800398246133627380233452740058415921100931744982211194283000934398478840745982065300359504633575474577799562585656910647363055167531373875857985756381800687808577569707409724967461067197075624985300033238645698375448083789869224967433558195847324422466863986882313997982486238861477454627627465785219153426489020937452763625666954338798726018679759417526647874615438067760050039684187826531617793221016422166744339010057390691643846513321745288123270670677041364740184506451964102192304067881657340245751824363412044114842577595786156560622077917393508851908308396318870761231665349164327316925687455959474689313680650308687413774322297581803053321630724729523742301915749909574767970628432308945655548572517200638894971768897134326316257289422418715517060178126115266210136240307422689293984904628440208138040602294799370295864052190295650654643989327960022359752148884822927000143940744425942189368253433269395054945773585054561805048768875165027501685296659630477763704010776537592485990635027052932653878162319017584001803544638905228709707343963704830542796939953115105822779242736632283878791341506013017104971915222071550540795924162617497253690752818395703263650816206561903955201459836011364740256784367020873611239386216818885242278686369841746220843846402548414368007326995615895443828867724790299968643719271106215118488801119129675573199963725443591459711507553156333038659260007980394632896102287196348070946299170447056287459457059086438745765197304007347557716946215906074392498487105555347446010148193326242672052181757827384791533386111884850308000751397539677348429358564271420837193300865881143920577661840587270542468040772678663499721958384299211759060645031609949074250339241538982720937442840994436143182039084059929210232494547306208854127237964333980137110219744771193137843471798444723019538515938676755006064767689561630596676756360110800053991420599190897561720701335591693866491106955466811482123400062718577844500549339614219595585977875668621028324675436756393772442820203073141257187073318208494123069214546337385264109984879850708087378667758727279127099687907868025882207483242656911985842946086978417657496830914014668682281599051448487331400908272654430797726729062948909472928031253073491876621825721911607252841621767854970530608723704541612194468222032677955203548237454651481138340851853375520840611623490378821076113274942951010611949043499459232607843863976420548624774403477966088662668690856671694926053212461189743252920784738033744949411106212321919197473385331401711912600843503457910506713797804102526346301597909839383743365401442021822719787269280062585651759399164150588254711136105893751125657553900552539632258788706942035812055442907823005558328798399404574475278865558684923760593414346964084045520633575944758831457020408174077238456742208266930845588110983461193689115022493880421289030095638359791843462575031690761256659230243129916269274268662304369069039219301638936369716659116920132360707043708201434359524793172197702387183002466778448688069432485681199922061117203919941692387654093127929408660539161616262957402507335304129825916485525499759199842580403022626668406399068929525300582394659287017821166070721145117921222308635382033142255055218661738789927507940217906237084922748333105752993718387213265450501963876653541877133001663509331337045375272157340193678113704030326097631451099027150947452419714323482142536291030303748191776451239752773430021102744390194564535071175244408291007839970208605310445201240225402718472482410700741564102454457204834802680871531823632322686744284453649791079152352606044392163630960851010556559237732878096092909347509248762498839003521248073952372613491811474378568046402667346414145366048525479575365899129818355417962969555977751412072774298658078318728292375478860594520786404966198063793380087369916696161504295120901412515711963228844937128301238533616629972304662957601366786798052007056705171740870411239810101786311850685871096025973548810738307470577323437811028024887010553774329176085690360548460308661997512032004844072838294993455987488001594132822378016648283382460447627376017307471640800943527449015620871775250819941536329235643416610305908901762988689883328183054684694043844393832160193835495122689236599650944834827887615212554651062502693220795518857127416986333300507621167599264203963824150047899426372586231995920865267475013458759925063071986699706355518733243010447224053082969179902661079049921149301316845771109685659258690354361027970785365404815849518336124767914345750793279299386083800622448822314891082066652523658534727300328602299622912239836956817751148858461082495782906930895327371301635325183314608300267678642770375476672694372168198075988607976500249932085089097923621747280346283291096529701130315203652140705289153255213570920909228743843612771418853559063813929956052252667538712392029327817619092285089847395762999562938098351961254357284994732057247714639124670014679484224085009912771359801342348387859757035501808080529169578406023824665559063730522368801350777803379744364132549811696939651914993705414641828340821129191357104859659463231199385822672327620091535302502849240119701495682237053438184169115974683557594737591493695417563414618758029928966623487657426738202042472394666375297043578414131582323506027609286142799290391091283024537501506178950167808427565156744731648510640956783874771540796050191624463040143342961069035276851936181018356189714220930589477920695251753633195792689161951645705697140576906828251092732688807405424057496372810521579266077104607101501114767762404602867992417919269881197835319963583863082262953323975713849537796602923783831366340989429451338302509639865431056544857354582045280422548894887567543054249232068322655040829073942418964900103800063318966176622858753158595721988590376733198900058829623137545337904889827561306277382111211009815496323906148451337258519143418121196440798251661597954042560807152857563128947453835157406651118024710980287944887380792839757228680393208312679087802608960769434397348301700019865288837648294718330183558727152097884887749789345271347141201348510503265643982999849672032105034612387440194341850424135941410385565011853379483729431870266976664675255238158616185392914665018953703671903664265088884767085316455385613385876604841154238961347415601130199057224662935116229341679002087750610753928228048531521780087305352616155267750886850720664769127339483782140310561036080117943715166229308391160797903919602102578914488892782420379586050644800133021711296106245339887156033650293126699232384636794381173078909003886451907730125790523099603534468057040318353040689093675565434239410556809223102959129025417350843167724831161225318688787001299108588502603484755110109092532299444807849789442884654909054676083298616783621785374792832655441541136184974335721171762066210754992908809846215943341880849317427703725231787030872139567778096513058617742679980995926527092808098756298857910932370818345753419791908387765569488537001806811895936000678677152596985086855743024332403341437457395460815171682175844742670642672248628854373527236976007847648925038741785480491155686993619582508611989953037255590241948580731814314618597033435392642756083611709314938763629305464128222475327177946736309775999267952003293766810578469974191000599453494064550901894090708411857899792226724219316461256016717331000504125258875927643728079436253451314878606479332510931454965241616878040116030276194822679364652398957615754658827477819799134814143563437137124265984619631866432161940942154848154058686607242367984799342334191552208848916909354403585595145353682620500983024756189521090951177700162611948154519656834346837011205814647745997590757289687698487841734728011365295552395672743466134154490062082688896269696475814001866779581200794631764491112464300284366103341752427065804412224571294791302776063551698271903028464026664574803676213878038652232282440651169206787804242957091477408084977764063205274949632551949469736927149391621918885165240238925725740819060675483755404972714965506012572588303493223217415560459825204706452174569289758240382271072832659699865214769948582517438848838342544601387750121310675610184797065326326292567648651636579954523226982386362735620429987719878245038675651564180280398970069573644929540697314945043836748538882821799132538940390960061916394696843937759561860491359045875578280616788264211226497965042000143348747029721122277200345099220974094246056362873781408473636972856798595983003472309567736537537836733606237837800078840789975197212591995625095417762424784800352434464942144917334611380149911857617292731825250701864607231648422573988487185457665137573561432785983228045497495613752237682024857529880785471407200098616193362263648239659008081873377376879794795821628500998689319077635211081979806410058722336207058058862192290852240926082110813132915598994892253913106672427478378388970073750312943910441270599336137069155113725987426699066850970029751248695285016222416536428178992568560217548517643022845638353355820251982741719058726917217120165437743599129588673466889783682621811079930479582780240374846989191180973887885099567890465723826838359079888501932136598203286665101964230509725172192144910066931618643543230529826456346443724937917962082982745195121545242076183206128478487277468150895387239963248240051599706803486681357809434077722981377785787059920098765742373562957638902791993416327057241171844799575796626717922765074237177504557676282860563993909395773395858198779587889289048272718776531011535029668565874811168001788060742047296955624493129138795511909669782337460011980452542325924665184457777181790977616624614930025024385384913629516997296438200692179651937191166491598263963634947740625211375950720595121883955123778305177552492598862498763725933716470413612737539695204488826983095784450831855208122583243883619911548223890516917762338134153412538674724004510061202370519451792930293622853693753206425642891762638254032567269343901974549458347913245778509272205406909883760296428963022454008382491061533975487789597585460919259680691382447855891640738263155817323315467310414919399219369591288169840644724694249132288601500408559043202149973695249669074145711018360228324111412689056320112579929002618348283715536336444408625708367950099581941431321005027277595788745858779613776396103915140908157683594590165896165852979362006578227426127182063548890296610987658568846953092913461553405704574574036333088138719825611305147455672674659602971404875001943134865306638006414895086763117509847124520532325317949198799458349093099377547406216302210684146557230465183408517732293961500618512039984391982447169145875696004147266939054760605468175687381085531841358161270629268699143595375438201168668019666972659955465393759188035466841765199670091190103801803835722007871027906558461685095298514375277088743331718289074038106242729468111083689146064485784053872234377305496602076312917255050008884731821218917902895347699307931576128752147231629593048929027930824857381191354609343085925905306619007078716816937699797837553388113033503169870322409767517503285673104160067025928775468533677603224213663121526032544075092733382105968388544806615129125685630832008693049988764586506832298561241613074414899841371464762451319011650277845894584040028871930326008306183638138816720846492300252970741678349163971025814466668770302991388812212763806053620486278243168353734712934666079640415608482102543772756632199628941334525370667941099446393619307599182480313746819798741366906365682495402352687578811988830754817341356463536549980956233591080524772887770222950683434561718016177024756810612796344491062928975451893629681711578984661965448121712244193566606061059340319429830709971695595299887075539239922424274800390822787094557418860015790986230773251195177127923066295360651733594940208474684037063773726581028752698198113228701136865970679018325035668075301736869569059916003435654944974623790020922674642031490147227211837404581571959408027246549193759440984518602233329528282744397379638286436926361604074699995452855844600379430896302713995639056528117815291507141032239806568010418705627487553751032557173308821742474038029211595490125100787377325732177443861392896403806876226966831721179316764752647263988466400122315737066325417796144784450916439277405772990627512251481683047223185107726213566555296805858136135903347205566501198667155513965130805742661243444890465679417379192463124886916474429118528409550661063979667130331552105846618951679332418117045873847829429402835846093092089632514761046304335084369079343097623168110080428578863669299264413669181800658743241797645946739075913872265846435086358091613997650441998279634301810318243432405541052038727667846188840390178438338004478809424110045499030394919371892928792197536913856197128266054181440609572158744128113563116048177075713163399520484113838813840724068046860651654115644261169860523943680966905477278657385572689081529953719044717919951267601071968779682542902181382513151680678394849516317249604829860741131691217614219447410006432898178018305220170381573294441248966391803366518112991290901894202821790249668523250023397607077938447158556265571851873706897675571836199350615722136579672883521276318121044227715943491483599504954222161420608299807496661713700303989188743685782539996968945177670673236865468602010922038775680468980486961047571998679064323879369465780716943908775876343569070412399863104957897573771659574856970111932415969603213724954801145617623037650269299604129573820173072875426795912792207803510363208518402117221116962470743845418674056255841374390143854389016721641059288350687639837760698136790300751370894151035285531701745221977062333346731966942285878342857850532625474903177467551772386803578601227745814247622103821428986545130495575868548847491053983612513811786521856304997798625211237184076446966970011703777520174899507933589276715609396825085262901907136619985628740372458304856945664248755557922738172631815181176126298993219852887101375828866419462510547481374211287980332883022327450766139170267024444770543975381479349540801778291434451232820456158627343617257714943015586507695166057160849490854429442756162319157125444578498910720676816348980025991380410741941207141282912787134758560443740892578231445494229817623434188362506129260462242680172290101397848825944710756021160717193147655570469224148787357195339282737962232618133096687263686290178292746947264265761619123496731042717590868004720876611990336045064568959898817634370389723978011890790055424266605474967959949645399439658158606384453486665479472899622442556404229200546646135806487456669634046116411865427598761658248224817538234935479655114811601024764367720419603686817180874527333688571045643624362584275832455167587573891364950806581845217965947217222031388107012939520572989891409690595157081524545210055153886869223231804082113808515266172916226142687504724368349239187056545071221708797520142195038913497200311395955072600132876374645409026466448672427078177038491964255060979439470551164636169689275804801282699905994603812555516987521146037147475929771144072505613674980083912485217874821538404991342152364914883144171954038764876200891938187458067598232699764163652694023097888939148939436675478220717649429807380970929818688596569260920256585617389514161451261648928790194053848129993502523091994482397703685511456419461392686905762060773381685764723288517336810865122457645168079420489068321950337498459229746422826065189419739320826018403188252098904662919790964141716009067607777637028469051926937234032249271910139946921764112945569676512059502207157525013636432685685253122657435750295908322714563416018322449853006951092222589368324466991369493383148389903429388766249808220859496908351338786878031502941704088989365331269546403417879190354281522647148408067480687770884662636345134461305031102586091552904275753873005191490262459644656050387521714447508013733506385228791029120359270691517946497285915001286726277942191655248873559935695730071944463013747426375752602418711849139636004719155255807769343127697825836111338586359368348923988657603886017247912768618857160955580764203498964653512425126917137009730390554745139012433464757955431053382430311933834425988937410127608279810557443002816634746531702106997926745915242645501227542266592052878204628714772879783129687203654301106990738671287210439169930828075894790585767373774484716244126521741857438495198137591148492496802088883297568167597702563115432856175302824841419021054603951834257159574750020486891111885088791153416332474710421805904524622239798087854217254865493794922379281856934879795538732894542464377767719764840188990444280372987818006899393612495978888629422725797969999124295846364804335288048646762430747864263627161309483649159514089039024252690005136190382084538552844878012045189676780414464213460662105181581022259353193684879188718185718503863866474342586972471180690287854537446021441163285538358414738717614372038521354234829689371706196776769929648045141610624613884574437786569007061585798784991624233671652117905643664918143039433329993208189833213168514084482714292764255428601098924905911638687024455996871325156542509747445660757699695802344676743311518340059777026135032930660149945641571139388142062763056598637855417765727149634539889936659839619414144242448289385778398140196049083457953468099819969684788295478796821594544980448490452900607760141701768505338894035743624859397547161960528655546800994798736663350448430026414200623297276006229525995498275801706446961684908301757392310874142052758510817159480529489265803366182721098048558377523927295755473398839019719091850374922516575570241476062431649051285782065206087768709258633431095900619195159182209838128855278020562324526598237131289795579143613586546131960030738020657612764363801586378958617610966674812775378413144595597497936956652198216920028266594114691542034087372967556494018664784757224499224979826625915813835995023118893221847793700153003599322343485629679905368692583650937305276618743877809726781444416353909286316190222955213489683078632688630580078462062952388514126343586238174575035312488560025189899791464385359526221554987822048231698853974279392319350828634400818785527837154874643352457874754362931652387774116422880256174077509624420462942919019395056307172559004779002128441845252744659921816114427793129295421082749956803089421898052313795317372950532569428778232511131418233750743693326132745241956824363958098248310935755850143562717846467674144829873085573586493144877534477096420654140268655733940797802916832085083545123558135684315183725682988565635876666736785524642351504569131601185078137859786572442559601990584316670574890887702521135803805967794452549775302465557740979637224278868112311731779014344224169190999240826299116029134152195075959690304138932593684174633188455075195185156444387152311561375378170049134731383539401685858615564633742057942364306433057537386151860010716612244011537277855355819218042509571887364953718952719147713922484949342653923390536481819501393822357348071502458945889383712996566108992099192749978192388325042684500301784484433892507594639760233844340529683529483255688370909186407810606336069480918514993750216024134162625584351745931478177299076425146088585014203821896820542310383865052924308894737116859338140192261668133049765630386849276586464714889018210282801700689240878937299492943082647652535733075605019056024720135497549023001975431952805315086971423067435603545925303650090771766933168321884302945887340791553504719341385455627038150400075974110953873239845240126899464726955816301339292094639979039091400799445963471771414700041553578072950610667342724807333921500451171931463195747207964098781254220789667466323432142361857388340109415590431610319744217204168355400678919775213048848394365148129933529210161350726090441619532630687994675784160237873769031736524334632151998972108987721771807840196964350640949484071583261712115903718901256369943062231633653784273885242938785840837776817830142956745730047545725096494547896654445488418674730142972922362650826718264926318463902267832714775306880531406077238244809308074584713313606862194502920302842621568004372152839975427269494804228997569231328236152914924524334419405116030537812929042326355276328056788826466033526674486823534532127795227887857461825176387112533730681812805743553858997373886416890212310413064969485754349991323232904131265987415972624342848956809693979878489652365876997549493162940230039252514799706642955094885147696076427477078632741612905247282010954042151149819283274684371657312085585661855545775083715446575973718763858429502243055443132649973496597721837548675667164831987681153912624973222803234541347179595412149608294568403459382763152306054067118497790406967770447578582097383396315280722655027378890564073315162293904458652314495703066541926077036937751656561820033437234485440915530107213325097612925385013841636205846970605001219325159417952707703752590448589599758153004889765612989103506804563102143486024082596376398413229251583465416436094799905940246097955714306963262106195951384453804015319066075663131819606763249980935026458875814751518788583289723823828865263986036347970610345081392819606386880744057465164334854999984450368480224075057295371653782172441069617100806712182036370374639585545936975422316394056099790844768236650826512736638054122249725316294690051617289340080728695315146695037167572593399715509487053850753126964532936699070478065718305234343535172440929870504185759391931301362424299183521581546473473697011596072952934836343122410429937571029653775657215585841201451173976052406474700760472027869868906902826407482124625552587403061107442234984987056606964355415226328633198187779622120224806690976794170036098613038103165532095207978348530809277254691822676779038296344049634430676906538598980409992985007619539876497782373998387416690317141523222148507830460846168503608439743785350561893660252991892935262397653018488010317928520890289353497994605585292145755010888978874702819669682967102588323241076013973677618116548956328723150890399748517538347361748436095693724671170364052950622245875341623034071776431844652106836898436610782008171472443774851582905104718704276817887612009430865629668047990089280926414240850878727873769782061589930957994425783199646774027455280714889306354640714747004924826351842577469459279151308164057612421900708050229972326018115817007721413806070904732245997339412467082510768213545184027811605694407214707323715119280050743971962661513475192203241331881777328751029203422639632923770077979741036648906186528339592306798632744183391979450420332699945262507219580601107415888778156005688373300810644561118439560098830331676557607133111999051641856239466246968573623915482435388500295055962981194990214238639241115047555326048849255511924498973069268876594088050285293588373704577595381121604707217088999784534186760425006589163297571044921562060594090415298947118937044686203062235766167084890576864086821982100252857772562061889358706659775623450514047518693343040068541836362674832958979041241280127017280684451384722876077358578505779885848607618840560856112713193487360602012566702211273147645710933672072352305953895602931234014947038507326468504698789028438659968464517598505851157078885522002195294653851580922809588426553826461492373304396188732320241554374608200013019909461123192083532715427808886268660083825430162328073971168537448263319488546714697138333635731748981493088158773150538337450474119754504778864842367337807174945201665553757128477108164984429896475526432108214227103919784053797853215192435359732997285766703168390182545545913948193843285604471647785626100932920394055812946500206528882574763846347091015085134277070094224790685915908177094993496935303104763683167362851685701925237910004614525704035226053382892745661100036719984532848290114752462745733176901611848377352449785750268901308907223680062882460419346437163274189287712263951753079550211039827985542643308067640194918207056472801488625307366192797123066502129056895009841807024421267047613257603425224627919383984855326072524907537477278210653242546036593677755809604979372677307313827649697529796118371452252941456060785595949540977060972296704642710487141843132619450645606931479584042124768578699239579480966686863185352958896212537674781697560374255915803908121811901894558177516805085475118206403699074718989930183772588996938148059746444350596489534441051023331424824989533490931212472599825430502641274687393459819986207098335991083064544890775093406672654295639736716480382202118442416233002621719696815249183723998636736931430792249389035510635255375063958267341513690551451510453120391329915560675838183463965026663102133854472704403441011821926803336443146072810643001453145389773431121249288808588302488218855865691263373850591061751418857498858316481402749300131906727924018023689677442967384320288072048491553489652124632367780328402799848329397145167925515351409687887536983323778349778457255882981377221915646703121789748142011650529900387702789702178630627686932476228825355214837095061436187429821948213850292308091582310788923265426392299191826045929269990015803377921176482351147378070983313694719464507826105985713007065717238095527982784213756741552852697744887383274449628770115950036019467755790765177711737831070385718914139551387854643024636748871322655425328112635767779999650179673540215908228698590265295591655625944221562206297661535120095617674871162418330631507928423878681216552224377434891902950394511241665007361476212765431558159205134327201855627026023520085003022655901862310473412846398934588421038398689254624475018061942242031839943043180694539460601885792784321439613150628956599124836381519271697110789820017954446047064544871212738156759706881805269196074217327563311835472593199879069540000201205408549411958223067524791433575513749259841962686982558765918618292032627717856597011959265055852770202635255588990072126838541860848872716274446317499529608946195318323844588913265188581680681891055275982565392266901027851246360584959167730371607239660995328220097372085126640035465955710685770139239708685598444016615373068931998595844446607642125283488038284213945889439502093510274084012066183815679707446329292241665440953459406241255031777999816573272786525730973621301285610352997837811114929491569985022996438619560362631262775699384227587946154074403080009746653245996567084197019047813151780598340363937550123459468464388417867692606573876339776468913908083518589661074401062487036455640518100593769752386406568994031142021474109350672991272421601912611566558325111595776348617350685588109601494949242696058360402656797079262808134799418179225498928171490172985172348907461029473463342683656130077045409747248746742095761868935702004789504815350954705523601051377479982285439143711483294374931627416267516276471489357400958616935798137095059867487964256293427476472029953958563329852080198349087128577399352144050389400490759121856189402839017791704464250715815422952500685516021803525944816322118520887773000944520541314443952856604388660687605061473117989521720966936050546458509967377188660210682570750962232731010725799385166045649093945815165856387155784133604768798109103877278703579836102050306449875879824654781759344599948441688100238938997061769150755560723561533363058153113268713064360603162152427280723905059799769808961484110300990843612401135793501175124311273722522250987521206939856546333608421582893001159666588360694246680197970326855789271344796936786271511643370976517074128467886702673069831148562758103681350525639347485007553194802123410832490950191875857065479900458333378917181693305001364665834912036604460464827628778585436942161244363956731865436155835483875080165767044466778326900032755658910888623529847026345574542800677756728768231830545393584806517401805044428087333857489378393349912301056948162553971874870408062048159606540663012274495131704354631809490173203233902406297114720454090162644805901487018197434403394103898582280231418524257493784510912971846551097707656465252597777482224747402384003860326352082624772786186742016150408729857680943550941815408379680760935460712081786172504173877738415938760720429904375674934570482232153040274806971133700891219358945951366390556582928426064185969821495597667913278177446520622690375832437226819933546984968036491699877838245556282878632022695136184016829168953641379294539963366407803408496298387223920100544480529367026089188323275419136858246994944770671890824187873301909092320149897379076088048062732331317351859571794971004584579604109838025293463024673336193421874703209281020179698573916733259158945894017047348537837432159580593550888994664474699056661472019402686053089198636607927318598304961841339084145815029172985409615946043124670530037013063985176128624242135063034657893923576759412354521622332385504585061409138623216306643449839194749233342247633943053400024215497223077723545113256857522479508102368996748613781849119681729186233400526719638236509509091893943282946983609723672565224326313929987619618143061616058958456496577190586418441371523602563904411913936494878659035534401638929315216371067357326735545708208082901370839099348216498918144696785087675877830085249184793911392624423446366435626836323405416412711048513020014520577771279647211425793267742487395148774065269212053678363231399778635412868112484205331045805424630454680465172790952588774476826144430862191341971290781720127300940315793494090560704907536121812639970119815874877329522698736725742426790267929560601688709994291841252980250060696773585947749470211334714902713389493669913700279729543487595837779817669325612369152063430669619198705684208488869063148410358039359810422775794350895527858489405197120104230904916756662939860273702188683026043688672389691932523663783839974431064500114824946203070396172867612459532639855515243796702577655094583272180976867619598891739389838313315966531943388895839060277027678735188099580247607609812205720855208221500478928167251745447464229970860340178425879201108924519153481494589835941632054274703013415197097453177790395559924125527336834324157949091406296811904280990954282881730488584371934780950371519708438662362798144897552314028608505672023890194177562788219519536129793040505405109229416163581312322846217874824891451060366891234153874747062524133533217955604684554402797488004527840348368724684504411424118345447577929805807074830821552613159713122454270824181462738929143329419743805809253660783467571216
This is our perfect one-parameter model! Let's take another look at our prediction for the first puzzle of the public eval dataset.
y4_pred = model4.predict(np.array([idx]))
model4.verify(y4_pred, y[idx])
With ||(p=38||) our predictions perfectly match the ground truth for all 32 bits.
y4_pred[0, 0, 0]=np.float64(2.9999999998578324)
y[idx, 0, 0]=np.float64(3.0)
'01010101010101010101010101010101'
'01010101010101010101010101010101'

Bytes on Bytes

Let's be honest: claiming this is a "one-parameter" model is, in some sense, cheating. The model simply hides its complexity in an immense number of digits rather than its parameter count. Instead of millions of parameters, it has millions of digits. A better way to measure model size is by the total bytes of the model weights (number of parameters × bytes per parameter). This accounts for both the quantity of parameters and the precision at which each is stored, capturing the true information content required to specify the model. Scraping the official ARC-AGI leaderboard, we can plot each model's size in bytes against their ARC-AGI-2 scores. (Let's assume all frontier labs' closed source models have 1T parameters and are in fp16.)
The one-parameter model is Pareto optimal on the public eval set of ARC-AGI-2! It doesn't just achieve the highest score for its size, it achieves the highest score out of all the models. Remember, we measure the model size in total bytes so this captures both the number of parameters and the bytes of each parameter. But the one-parameter model also gets a big fat zero on the semi-private eval set. We can plot
While the one-parameter model achieves a perfect 100% on the public ARC-AGI-2 evaluation set, its performance collapses to zero on semi-private evaluation set. Every other model maintains a consistent score across public and semi-private sets, but the one-parameter model’s failure on held-out data reveals that it has overfit and is nothing more than a clever mathematical hack. Taking a closer look, most top-tier models approach 1TB in size, while the one-parameter model is a mere 5MB. If 5MB can literally memorize the entire ARC-AGI-2 dataset, what is the purpose of those extra trillion bytes in larger models? The answer is generalization. A model is much more than a compressed form of its training data. True pattern recognition requires "excess" bytes to navigate the space between training samples and generalize to unseen examples. These extra bytes allow for language, reasoning, and pattern matching. It is in these excess bytes that true intelligence lies.

Conclusion

"When a measure becomes a target, it ceases to be a good measure" - Charles Goodhart
Training on test. Despite never using the training set, performing no pretraining, and having only one parameter, the one-parameter model gets 100% on the public eval set of ARC-AGI-2. It takes the idea of "training on test" to the extreme and encodes the question outputs of the entire public eval set directly into ||(\alpha||), achieving 100% accuracy while learning nothing. Simply shuffling the dataset will cause this model to break down as the decoder depends on the index ||(i||), not the sample ||(x_i||). It should be abundantly clear that the one-parameter model has no ability to generalize whatsoever. It would get a 0% on the private, heldout eval set of ARCI-AGI-2. The one-parameter model is utterly impractical and, frankly, an absurd hack. But that's precisely the point: it is absurd to train on the test set just to get to the top of a leaderboard. Yet this is exactly what occurs in the AI community. Top AI labs quietly train on their test sets. It is rumoured these labs have entire teams who generate synthetic dataset for the sole purpose of succeeding on a specific benchmark. I've also heard that at certain labs, your pay is based on getting a particular score on a particular benchmark. Though it is important to incentivize progress, behavior like this can create a culture of benchmark maxing.
Intelligence is not parameter count. The existence of a simple equation with such powerful expressivity deomonstrates that model complexity cannot be determined by counting parameters alone. The one-parameter model exploits a often-overlooked fact: a single real-valued parameter can encode an unbounded amount of information by hiding complexity in its digits rather than in parameter count. Larger models should not be assumed to be strictly smarter. Instead, what parameter count actually measures is computational cost, not intelligence. FLOPs scale with parameters and precision, making parameter count a useful proxy for the limiting resources in ML: compute and memory. Of course we would never train a model by shoving all the information into one parameter. In practice, parameter counts usually assumes finite-precision weights (e.g. fp32), not infinite precision. That's why the one-parameter model is more of a thought experiment than a practical proposal.
Intelligence is compression. To compress data, you must find regularities in it and finding regularities fundamentally requires intelligent pattern matching. If intelligence is compression, then our one-parameter model has all the intelligence of a phonebook. It achieves zero compression and is just a nice lookup table. It cannot discover patterns or extract structure. The one-parameter model simply stores the raw data and uses the precision ||(p||) as a tunable recovery knob. Real compression requires understanding. If you want to measure the complexity and expressivity of machine learning models, measure their compression. Use minimum description length or Kolmogorov complexity. These techniques capture whether a model has actually learned the underlying patterns. They cut through the illusion of parameter counts and reveal what the model truly understands. Prof. Albert Gu's paper ARC-AGI without pretraining actually does this right. They used a general-purpose compression algorithm to solve ARC-AGI without training on the test set. Our one-parameter model is a degenerate version of the same idea.
The ARC-AGI Benchmark ARC-AGI was intentionally designed to resist overfitting. It uses a private test set for official scoring, making training on test impossible. (Our one-parameter model only trained on the public eval set, not the private one.) Yet modern reasoning models may still be overfitting on ARC-AGI, just not in the traditional sense. Instead of training directly on the test set, reasoning models are clever enough to exploit distributional similarities between public and private splits, a meta-level form of overfitting to the benchmark's structural patterns. The ARC-AGI organizers acknowledge this phenomenon, raising concerns about overfitting on their own benchmark. However, the fundamental problem runs deeper. Many ARC-AGI solutions appear benchmark-specific, using synthetic data and abstractions tailored to these visual-grid puzzles. How many of these solutions have inspired downstream improvements in LLMs or other modes of intelligence? ARC-AGI is a necessary but not sufficient condition for AGI. I hope these techniques prove to be good for more than just ARC-AGI's delightful puzzles, driving broader innovation in the field of AI.
Is this AGI?
This tweet got ~500k views suggesting AI labs should buikd "a model with 0 entropy, 0 hallucinations, that just acts like a retrieval database over its training dataset". Our one-parameter model does exactly that! It has zero entropy, zero hallucinations, and perfect retrieval over the training data -- all while being continuous, differentiable, and contained in a single parameter. However, this isn't the path to AGI; I do not think AI labs should build this. The real challenge of intelligence isn't memorizing and retrieving training data like a retreival database. It’s about generalization, interpolating between the training points to predict new unseen points in the evaluation set.
Closing Thoughts This one-parameter model is a ridiculous thought experiment taken seriously. It pushes overfitting to its absurd limit, and I hope leaves you rethinking generalization, overfitting, and how we can actually measure intelligence. Personally, this was a lot of fun to work on too. All the code for my experiments can be found here: https://github.com/eitanturok/one-parameter-model. If you liked this or want to chat, reach out! I always love talking with interesting folks! Lastly, thanks to all those who gave me helpful feedback on this post: Jacob Portes, Isaac Liao, spike, and others. To cite this blog post
@online{Turok2025ARCAGI,
        author = {Eitan Turok},
        title = {A one-parameter model that gets 100% on ARC-AGI-2},
        year = {2025},
        url = {https://eitanturok.github.io/one-parameter-model/},
}

Appendix

Appendix A: Other Uses of the One-Parameter Model

The one-parameter model can be applied to all sorts of datasets beyond ARC-AGI-2. For instance, we can encode animal shapes with different values of ||(\alpha||)
Encode animals with different values of alpha. Figure 1 of 'Real numbers, data science and chaos: How to fit any dataset with a single parameter'.
We can find an ||(\alpha||) that perfectly predicts the fluctuations of the S&P 500 for ~6 months with
alpha = 0.9186525008673170697061215177743819472103574383504939864690954692792184358812098296063847317394708021665491910117472119056871470143410398692872752461892785029829514157709738923288994766865216570536672099485574178884250989741343121
Predict the S&P 500 with 100% accuracy until mid Febuary 2019. From Figure 9 of 'Real numbers, data science and chaos: How to fit any dataset with a single parameter'.
And we can even find values of ||(\alpha||) that generate parts of the famous CIFAR-10 dataset
Encode samples that look like they are from cifar-10. From Figure 3 of 'Real numbers, data science and chaos: How to fit any dataset with a single parameter'.
Indeed, the one parameter model is incredibly versatile, able to train on all sorts of test sets.

Appendix B: Some Technical Critiques

Two quick technical notes to the critics. For the complexity theorists, yes, this is cheating. We've violated the fundamental assumption of bounded-precision arithmetic. Most complexity problems assume we operate on a machine with an ||(\omega||)-bit word-size. However, my one-parameter model assumes we can operate on a machine with infinite bit word-size. For the deep learning theorists, of course our one-parameter model can memorize any dataset. Our decoder contains ||(\sin||) which has an infinite VC dimension, i.e. an unbounded hypothesis class, and is therefore infinitely expressive. It can learn anything. What is interesting about the one-parameter model is that it offers a tangible construction, not merely a claim of existence, for learning any dataset.
  1. Static notebook
    This notebook is not connected to a kernel. Any interactive elements will not work.